# Message Boards

Answer
(Unmark)

GROUPS:

7

# [WSS20] Particle-like Excitation's Causal Influence in Wolfram Models

Posted 8 months ago

Abstract In order to determine if a particle-like excitation is present within a constructed hypergraph created by a defined rule, it is a matter of creating new analysis techniques in order to observe potential emergent particle-structures evolving within the causal graph over time. One can now analyze the causal future of an expression events graph and state plot for how a certain event or expression can evolve in a hypergraph, as well as compute the density within a ball of defined radius that can be measured or observed to find embedded particles. For any given rule and after the production of a candidate universe in its final state, a procedure of repeated sampling of intermediate states can be performed to further analyze the causal graph at scales that wouldn’t normally be feasible if simulated in one direct computation. Single particles considered to be an emulation of a Turing Machine-like structure evolving within causal graphs were discovered. A particle that is the hypergraph analog of one predicted by the Standard Model of Particle Physics can potentially be discovered in the future through the use of simulation and visualization techniques where the previously described methodology can play a foundational role. During the course of this project, single-way causal systems are extensively studied where all created functions employ post-processing.
Introduction The motivation and intuition behind the search for particles in the Wolfram Model stems from Stephen Wolfram’s A New Kind of Science, as he discovered how class 4 cellular automata engaged in structure-like behavior after a change in a cell’s initial condition was made. In comparison, the proposed visualization of a particle in the space of Wolfram Models will form a causal structure that evolves during the course of an evolution as the generation count increases in an ideal candidate universe. Innovative modi operandi were constructed which enable diversified mechanisms to search for particles as described in the abstract. A perturbation-based process which looks visually similar to this project’s approach is described in 4.14 in the Wolfram Physics Project Technical Introduction, but is not pursued as the current project does not make concrete changes to the evolution itself. An initial concept of what this kind of causal influence looks like is found originally in NKS, page 253, which describes minimal changes in the initial condition where each change inherently has a non-deterministic potential of creating a different evolution pattern: Benchmarking the differences between one and two initial cell modifications projects the commanding influence small changes in a cellular automata’s initial condition have. This path of thinking gave rise to studying the causal future of a hypergraph, nevertheless the described NKS procedure and the studies conducted for this project are not equivalent. Visualizing the potential impact of a particle-excitation embedded in a hypergraph is up to the power of computation to reveal its inner workings.
Definitions
Universe A universe is what the Wolfram Language package SetReplace uses to create Wolfram Model Evolution objects, consisting of a rule and an initial state configuration.
Evolution An evolution is the entire evolution history of a created universe when a generation count is specified.
Single-way System A single-way system is a type of evolution that consists of no branching, otherwise the system would be considered a multi-way system.
Causal Future The causal future of a hyperedge or event is a set of future events influenced by said hyperedge or event. Not to be confused with a causal graph, which is an entire evolution graph of the causal influence of the evolution’s events.
Expression Lifetime The lifetime of an expression is the number of generations an expression undergoes from its creation to its destruction.
Mass Mass in the causal graph is the number of expressions that are updated in a given generation.
Volume In a single-way causal system, the volume is the total number of hyperedges in a hypergraph.
Density Density in a single-way causal system is the ratio between the number of expressions that were updated in a given generation and the total number of hyperedges in a hypergraph ( i.e. mass volume
State A state of a Wolfram Model is a singular space-like slice of its causal graph.
Hypergraph A single state in an evolution.
Ball A ball is a defined volume of circumscribed radius within a hypergraph.
Uniform vs. Non Uniform Density Distribution By utilizing the measurements of density for a ball of specific radius , a particular hypergraph can essentially consist of a uniform density distribution where every location in the space of the hypergraph has the same density. Alternatively, the hypergraph can be composed of a non-uniform distribution, where the density will vary by location which serves as the ideal candidate universe to find particles.
Tools
Reference: Frequently used Wolfram Models for Demonstration <<SetReplace` In[]:= <<GeneralUtilities` In[]:= Model A : ruleA={{a,b},{c,b}}{{d,a},{d,b},{a,b},{d,c}};shortModelA=WolframModel[ruleA,Automatic,5];modelA=WolframModel[ruleA,Automatic,Automatic]; In[]:= Model B : ruleB={{a,b},{b,c}}{{b,c},{c,d},{b,a},{a,d},{d,e},{a,f}};shortModelB=WolframModel[ruleB,Automatic,5];modelB=WolframModel[ruleB,Automatic,10]; In[]:= Model C : ruleC={{a,b},{b,c}}{{b,c},{c,d},{b,a},{a,d}};shortModelC=WolframModel[ruleC,Automatic,5];modelC=WolframModel[ruleC,{{1,2},{2,3}},10]; In[]:= Model D : ruleD={{1,2},{1,3}}{{1,2},{1,4},{2,4},{3,4}};shortModelD=WolframModel[ruleD,Automatic,5];modelD=WolframModel[ruleD,Automatic,10]; In[]:= exampleRules : exampleRules= In[]:= moreExampleRules= In[]:= Turing Machine-like emulator rules : tmRules= In[]:= moreTuringMachineRules= In[]:=
Registry of Wolfram Model Universes Generator WolframModelData=ResourceFunction["WolframModelData"] In[]:= wolframModelDataRule[indices_List]:=WolframModelData[WolframModelData[]〚indices〛] In[]:= wolframModelDataRule[index_Integer]:=First[wolframModelDataRule[{index}]] In[]:=
Causal Future causalFuture[evolution_WolframModelEvolutionObject,indices_List,option_String:"Expression"]:=If[StringMatchQ[option,"Expression"], VertexOutComponent[evolution["ExpressionsEventsGraph"],Thread[{"Expression",indices}]], VertexOutComponent[evolution["ExpressionsEventsGraph"],Thread[{"Event",indices}]]] In[]:= causalFuturePlot[evolution_WolframModelEvolutionObject,indices_List,option_String:"Expression",o___]:=evolution["ExpressionsEventsGraph",o,GraphHighlightcausalFuture[evolution,indices,option]] In[]:= Plotting the causal future of a hypergraph enables the discovery of how selected expressions or events evolve in a hypergraph for a sequential generation count. The expression events graph displayed adjacent to one another proves to be a phenomenal tool for visualizing the varying segment of the causal light cone to recognize the inherent causal connections . The utmost useful graph layouts when plotting events expression graphs are the default setting or “Spring Electrical Embedding”. causalFuturePlot[shortModelA,{#},ImageSize400,EdgeStyleLightGray,VertexStyleDirective[LightGray,EdgeForm[White]]]&/@Range[10,30,5] In[]:= ,,,, Out[]= causalFuturePlot[shortModelA,{#},ImageSize400,EdgeStyleLightGray,VertexStyleDirective[LightGray,EdgeForm[White]],GraphLayout->"SpringElectricalEmbedding"]&/@Range[10,30,5] In[]:= ,,,, Out[]= The Causal future function is a foundational tool that establishes an opportunity to exhibit any hypergraph’s causal descendents.
State Future stateFuturePlot[evolution_WolframModelEvolutionObject,indices_List,option_String:"Event",o:OptionsPattern[]]:=Module[{futureExpressions,finalStateExpressionIndices,expressionsToPlot},futureExpressions=Cases[causalFuture[evolution,indices,option],{"Expression",i_}i];finalStateExpressionIndices=evolution["StateEdgeIndicesAfterEvent",-1];expressionsToPlot=evolution["AllExpressions"]〚Intersection[futureExpressions,finalStateExpressionIndices]〛;evolution["FinalStatePlot",o,GraphHighlightJoin[expressionsToPlot,Union[Catenate[expressionsToPlot]]]]] In[]:= Examining how the final state is affected by a past event is analogous to a causal future computation for an expressions events graph, but in a different context: stateFuturePlot[modelA,{#},"Event"]&/@Range[20,26,2] In[]:= Out[]= stateFuturePlot[#,{20},"Event"]&/@{shortModelA,shortModelB,shortModelC,shortModelD} In[]:= Out[]= A survey of the various final state plots of an evolution while changing the event from which its causal influence imaging begins uncovers the inner machinery of any Wolfram Model.
Expression Lifetime expressionLifetimePlot[evolution_WolframModelEvolutionObject]:=ListPlot[Replace[#,Except[_Integer]Missing[]]&/@(#〚1〛-#〚2〛&)/@Transpose[Replace[(evolution["EventGenerations"]〚#〛&/@{Replace[evolution["DestroyerEvents"],Infinity0,{1}],evolution["CreatorEvents"]}),ListMissing[],{2}]],AxesTrue,AxesLabel{"Event count","Lifetimes"}] In[]:= It is advantageous to know how often expressions are being updated in a given causal graph, as it implies certain features about the universe itself: expressionLifetimePlot[modelA] In[]:= Out[]= The lifetime of expressions determines how often expressions are being created and destroyed based on generational count, which can aid the exposure of chaotic hypergraphs: expressionLifetimePlot[modelB] In[]:= Out[]=
Density Distribution List Plot densityList[evolution_WolframModelEvolutionObject]:=(Length[evolution["Rules"]〚1〛] evolution["GenerationEventsCountList"])/ Most[evolution["EdgeCountList"]] In[]:= densityListPlot[evolution_WolframModelEvolutionObject]:=Module[{dens,fitData,x,data},dens=densityList[evolution];data=Fit[dens,{1,x},x];fitData=Flatten[Table[data,{x,1,Length[dens]}]];Print[StringForm["final density: `1`",NumberForm[N@Last[dens],7]]];Print[StringForm["slope : `1`",NumberForm[D[data,x],7]]];ListLinePlot[{dens},AxesTrue,AxesLabel{"Generation Count","Density"}]] In[]:= Plotting the variation of the density of an entire hypergraph during its evolution presents an approach for noticing the characteristics of a hypergraph. In this case, density will always rangebetween zero and one due to its definition. densityListPlot[modelA] In[]:= final density: 0.8444444 slope : -0.02216117 Out[]= densityListPlot[modelB] In[]:= final density: 0.921786 slope : 0.008893947 Out[]= An example of a uniform density distribution yielding a total overall density of 1: densityListPlot[modelC] In[]:= final density: 1. slope : 0 Out[]=
Histogram of the Density of a Defined Ball ballDensity[evolution_WolframModelEvolutionObject,vertex_,radius_,step_]:=Module[{finalEvent,stateEdgeIndex,expressionList,ball,ballEdgePositions,edgeVertexPositions,volume,mass,density},finalEvent=First[Last[Position[evolution["EventGenerations"],step]]];stateEdgeIndex=evolution["StateEdgeIndicesAfterEvent",finalEvent];expressionList=evolution["AllExpressions"]〚stateEdgeIndex〛;ball=Last[ResourceFunction["HypergraphNeighborhoods"][expressionList,vertex,radius-1]];ballEdgePositions=Union[Position[expressionList,Alternatives@@VertexList[ball]]〚All,1〛];volume=Length[ballEdgePositions];mass=Count[evolution["EventGenerations"]〚Replace[evolution["DestroyerEvents"],∞0,{1}]〚stateEdgeIndex〚ballEdgePositions〛〛〛,step+1];density=mass/volume] In[]:= ballDensityHistogram[evolution_WolframModelEvolutionObject,radius_Integer,step:(Automatic|_Integer):Automatic,sampleSize:(All|_Integer|UpTo[_Integer]):All,o:OptionsPattern[]]:=Module[{explicitStep,verticesList,ballList},explicitStep=Replace[step,Automaticevolution["CompleteGenerationsCount"]-1];verticesList=Union[Flatten[evolution[explicitStep]]];ballList=ballDensity[evolution,#,radius,explicitStep]&/@RandomSample[verticesList,sampleSize];Histogram[ballList,o]] In[]:= ballDensityHistogram[rule:(_List|_Rule),radius_Integer,sampleSize:(All|_Integer|UpTo[_Integer]):All,o:OptionsPattern[]]:=ballDensityHistogram[WolframModel[rule,Automatic,Automatic],radius,Automatic,sampleSize,o] In[]:= Instead of finding the density of the entire hypergraph, a ball is defined only by a specified radius and a resultant histogram is computed which provides a more accurate and visually appealing understanding of the causal connections between edges and expressions. ballDensityHistogram[ruleA,2] In[]:= Out[]= Varying the radius harvests a methodology for obtaining intuition for how density depends on the length of the radius of a ball. Due to the inherent non-uniform density distribution for this particular rule, the density will never approach one. ballDensityHistogram[ruleA,#]&/@Range[2,5] In[]:= ,,, Out[]= For a uniform distribution, the histogram yields the sa |