Details and Options
Rules can be specified in the following ways:
| {"lhs1"->"rhs1",…} | string substitution system |
| {{l11,l12,…}->{r11,r12,..},…} | list substitution system |
| SubstitutionSystem[rules] | string or list substitution system |
| CellularAutomaton[rules] | cellular automaton system |
| "type"→rules | system of the specified type |
| assoc | system with properties defined by assoc |
Supported rule types include:
| "StringSubstitutionSystem" | rules given as replacements on strings |
| "ListSubstitutionSystem" | rules given as replacements on lists |
| "CellularAutomaton" | rules given as a list of CellularAutomaton rule specifications |
| "WolframModel" | rules given as replacements on hypergraphs |
When rules are specified by an explicit association, the following elements can be included:
| "StateEvolutionFunction" | gives the list of successors to a given state |
| "StateEquivalenceFunction" | determines whether two states should be considered equivalent |
| "StateEventFunction" | gives the list of events applicable to a given state |
| "EventApplicationFunction" | applies an event to a given state |
| "EventDecompositionFunction" | decomposes an event into creator and destroyer events for individual elements |
| "SystemType" | system type name |
| "EventSelectionFunction" | determines which events should be applied to a given state |
The event selection function sel in ResourceFunction["CausalInvariantQ"][rules→sel,…] can have the following special forms:
| "Sequential" | applies the first possible replacement (sequential substitution system) |
| "Random" | applies a random replacement |
| {"Random",n} | applies n randomly chosen replacements |
| "MaxScan" | applies the maximal set of spatially-separated replacements (strings only) |
The initial condition for ResourceFunction["CausalInvariantQ"] is a list of states appropriate for the type of system used.
ResourceFunction["CausalInvariantQ"][rules,"string",…] is interpreted as ResourceFunction["CausalInvariantQ"][rules,{"string"},…].
ResourceFunction["CausalInvariantQ"] accepts both individual rules and lists of rules, and likewise for initial conditions.
Options for ResourceFunction["CausalInvariantQ"] include:
| "IncludeStepNumber" | False | whether to label states and events with their respective step numbers |
| "IncludeStateID" | False | whether to label states and events with unique IDs |
Causal invariance is a property of multiway systems in which all branches of evolution history yield causal networks that are isomorphic as acyclic graphs.
In the case of an abstract rewrite system it is a sufficient condition for confluence (or the Church-Rosser property), and in the case of a WolframModel it is equivalent to Lorentz covariance.