Function Repository Resource:

CurvedSpacetimeRegionSprinkling

Source Notebook

Produce random causal graphs by sprinkling points into a specified region of a (potentially curved) spacetime

Contributed by: Jonathan Gorard

ResourceFunction["CurvedSpacetimeRegionSprinkling"][cond,{x1,,xm},n]

produces a random sprinkling of n points into a (potentially curved) spacetime region that satisfies the conditions cond.

ResourceFunction["CurvedSpacetimeRegionSprinkling"][cond,{x1,,xm},{{xmin,xmax},},n]

produces a random sprinkling of n points into a (potentially curved) spacetime region that satisfies the conditions cond restricted to the bounds {xmin,xmax}×.

ResourceFunction["CurvedSpacetimeRegionSprinkling"][cond,{x1,,xm},n,"prop"]

gives the property "prop" for the specified (potentially curved) spacetime region sprinkling.

ResourceFunction["CurvedSpacetimeRegionSprinkling"][cond,{x1,,xm},{{xmin,xmax},},n,"prop"]

gives the property "prop" for the specified (potentially curved) restricted spacetime region sprinkling.

Details and Options

When no "prop" argument is given, ResourceFunction["CurvedSpacetimeRegionSprinkling"] returns a SpacetimeSprinkling object by default.
By default, the region is restricted to the bounds {{-1,1},}.
Unlike the resource function FlatSpacetimeSprinkling, sprinklings can only be performed in 0+1-, 1+1- and 2+1-dimensional spacetimes using ResourceFunction["CurvedSpacetimeRegionSprinkling"].
Sprinklings are performed using a Poisson point process, with the expected number of sprinkled points being proportional to the spacetime region volume so as to guarantee Lorentz invariance.
Causal edges are added in accordance with the standard causal partial order relation on spacetime (as determined using the usual form of the spacetime line element) and are transitively reduced by default.
ResourceFunction["CurvedSpacetimeRegionSprinkling"][cond,{x1,,xm},] treats the last variable, xm, as being the time coordinate, with {x1,,xm1} being the spatial coordinates.
ResourceFunction["CurvedSpacetimeRegionSprinkling"] uses a similar argument specification to ImplicitRegion and DiscretizeRegion.
The following properties can be requested using the "prop" argument:
"CausalGraphFull"full causal partial order graph (before transitive reduction)
"CausalGraph"transitively reduced causal partial order graph
"Points"plot of the sprinkled points only (without causal edges)
"PointsList"list of the spacetime coordinates of all sprinkled points
"PointsCount"number of sprinkled points
"Dimensions"number of dimensions in the continuum spacetime approximation
"TotalEdgeCount"total number of causal edges (before transitive reduction)
"ReducedEdgeCount"number of transitively reduced causal edges
"PureCausalGraphFull"full causal partial order graph (before transitive reduction) with vertex coordinate information removed
"PureCausalGraph"transitively reduced causal partial order graph with vertex coordinate information removed
"Properties"list of properties
The sprinkling of elements of a discrete causal partial order into a continuous Lorentzian manifold via a Poisson point process was first described in the context of causal set theory by Sorkin, Bombelli and Henson.

Examples

Basic Examples (4) 

Produce a random sprinkling of 100 points into a 1+1-dimensional hyperbolic region of spacetime:

In[1]:=
sprinkling = ResourceFunction["CurvedSpacetimeRegionSprinkling"][
  x^2 - y^2 < 1, {x, y}, {{-2, 2}, {-2, 2}}, 100]
Out[1]=

Show the causal graph:

In[2]:=
sprinkling["CausalGraph"]
Out[2]=

Show the full causal graph (without transitive reduction):

In[3]:=
sprinkling["CausalGraphFull"]
Out[3]=

Produce a random sprinkling of 200 points into a 2+1-dimensional hyperboloidal region of spacetime (i.e. de Sitter space):

In[4]:=
sprinkling = ResourceFunction["CurvedSpacetimeRegionSprinkling"][
  x^2 + y^2 - z^2 == 1, {x, y, z}, {{-2, 2}, {-2, 2}, {-2, 2}}, 200]
Out[4]=

Show the causal graph:

In[5]:=
sprinkling["CausalGraph"]
Out[5]=

Show the pure causal graph (with vertex coordinate information removed):

In[6]:=
sprinkling["PureCausalGraph"]
Out[6]=

Show the pure causal graph with a layered graph embedding:

In[7]:=
LayeredGraphPlot[sprinkling["PureCausalGraph"], AspectRatio -> 1/2]
Out[7]=

Produce a random sprinkling of 200 points into a 2+1-dimensional paraboloidal region of spacetime based on Flamm's paraboloid (related to the Schwarzschild geometry):

In[8]:=
sprinkling = ResourceFunction["CurvedSpacetimeRegionSprinkling"][
  3*Sqrt[Sqrt[x^2 + y^2]] == z, {x, y, z}, {{-5, 5}, {-5, 5}, {-5, 5}}, 200]
Out[8]=

Plot the positions of the sprinkled points only (without causal edges):

In[9]:=
sprinkling["Points"]
Out[9]=

Show the causal graph:

In[10]:=
sprinkling["CausalGraph"]
Out[10]=

By default, the region is restricted to the bounds {{-1,1},}:

In[11]:=
sprinkling = ResourceFunction["CurvedSpacetimeRegionSprinkling"][
  x^2 + y^2 + z^2 == 1, {x, y, z}, 100]
Out[11]=

Show the causal graph:

In[12]:=
sprinkling["CausalGraph"]
Out[12]=

Scope (5) 

Sprinklings can be produced in 0+1-dimensional spacetimes:

In[13]:=
sprinkling = ResourceFunction["CurvedSpacetimeRegionSprinkling"][
  x^2 < 1, {x}, {{-2, 2}}, 100]
Out[13]=

Show the pure causal graph:

In[14]:=
sprinkling["PureCausalGraph"]
Out[14]=

Produce a sprinkling in 1+1-dimensional spacetime:

In[15]:=
sprinkling2 = ResourceFunction["CurvedSpacetimeRegionSprinkling"][
  x^2 - y^2 < 1, {x, y}, {{-2, 2}, {-2, 2}}, 100]
Out[15]=

Show the causal graph:

In[16]:=
sprinkling2["CausalGraph"]
Out[16]=

Produce a sprinkling in a 2+1-dimensional spacetime:

In[17]:=
sprinkling3 = ResourceFunction["CurvedSpacetimeRegionSprinkling"][
  x^2 + y^2 - z^2 < 1, {x, y, z}, {{-2, 2}, {-2, 2}, {-2, 2}}, 100]
Out[17]=

Show the causal graph. Note that, unlike the resource function FlatSpacetimeSprinkling, CurvedSpacetimeRegionSprinkling does not support higher-dimensional sprinklings:

In[18]:=
sprinkling3["CausalGraph"]
Out[18]=

Properties can be requested directly from CurvedSpacetimeRegionSprinkling:

In[19]:=
ResourceFunction["CurvedSpacetimeRegionSprinkling"][
 x^2 + y^2 == 1, {x, y}, 100, "CausalGraph"]
Out[19]=

Produce a random sprinkling of 100 points into a 2+1-dimensional hyperboloidal region of spacetime (i.e. de Sitter space):

In[20]:=
sprinkling = ResourceFunction["CurvedSpacetimeRegionSprinkling"][
  x^2 + y^2 - z^2 == 1, {x, y, z}, {{-2, 2}, {-2, 2}, {-2, 2}}, 100]
Out[20]=

Show the complete list of properties:

In[21]:=
sprinkling["Properties"]
Out[21]=

Show the full causal graph:

In[22]:=
sprinkling["CausalGraphFull"]
Out[22]=

Show the transitively reduced causal graph:

In[23]:=
sprinkling["CausalGraph"]
Out[23]=

Plot the positions of the sprinkled points only (without causal edges):

In[24]:=
sprinkling["Points"]
Out[24]=

Show a complete list of spacetime coordinates for the sprinkled points:

In[25]:=
sprinkling["PointsList"]
Out[25]=

Show the number of sprinkled points:

In[26]:=
sprinkling["PointsCount"]
Out[26]=

Show the number of dimensions in the background spacetime:

In[27]:=
sprinkling["Dimensions"]
Out[27]=

Show the total number of causal edges:

In[28]:=
sprinkling["TotalEdgeCount"]
Out[28]=

Show the number of causal edges after transitive reduction:

In[29]:=
sprinkling["ReducedEdgeCount"]
Out[29]=

Show the pure full causal graph (with vertex coordinate information removed):

In[30]:=
sprinkling["PureCausalGraphFull"]
Out[30]=

Show the pure transitively reduced causal graph (with vertex coordinate information removed):

In[31]:=
sprinkling["PureCausalGraph"]
Out[31]=

Publisher

Jonathan Gorard

Version History

  • 1.0.0 – 17 November 2020

Source Metadata

Related Resources

License Information