Details and Options
Argument and option patterns for
ResourceFunction["MultiwayGroup"] largely match those of the resource function
MultiwaySystem.
Rules are specified as associations of group generators, relations, the identity element and the inverse elements; states are specified as words in the corresponding group.
In group presentation theory, the generators are the elements of the group in terms of which all other elements can be expressed as products of powers, the relations are the defining equations of the group, the identity element is the element that leaves all other elements unchanged when applied and the inverse element of a given element is the element that reduces it to the identity when applied.
Generators, the identity element and the inverse elements should be specified as characters, with relations being two-way rules on strings.
The event selection function sel in ResourceFunction["MultiwayGroup"][rules→sel,…] can be any function; additionally, it 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 |
ResourceFunction["MultiwayGroup"][gen,…] is interpreted as ResourceFunction["MultiwayGroup"][<|"Generators"→gen,"Relations"→{},"Identity"→"e","Inverses"→{"1","2",…},…] (i.e. the free group with default identity element "e" and default inverse elements "1","2",…).
ResourceFunction["MultiwayGroup"][gen,rel,…] is interpreted as ResourceFunction["MultiwayGroup"][<|"Generators"→gen,"Relations"→rel,"Identity"→"e","Inverses"→{"1","2",…},…]
(i.e. a group with default identity element "e" and default inverse elements "1","2",…).
ResourceFunction["MultiwayGroup"][gen,rel,id,…] is interpreted as ResourceFunction["MultiwayGroup"][<|"Generators"→gen,"Relations"→rel,"Identity"→id,"Inverses"→{"1","2",…},…] (i.e. a group with default inverse elements "1","2",…).
ResourceFunction["MultiwayGroup"][gen,rel,id,inv,…] is interpreted as ResourceFunction["MultiwayGroup"][<|"Generators"→gen,"Relations"→rel,"Identity"→id,"Inverses"→inv|>,…].
In ResourceFunction["MultiwayGroup"][rules,n,prop], the following properties can be requested:
"AllStatesList" | the list of all states generated at each successive step (default) |
"StatesCountsList" | the number of distinct states generated at each successive step |
"AllStatesListUnmerged" | the list of all states without any merging |
"PredecessorRulesList" | the list of states and their corresponding predecessor states at each successive step |
"EvolutionGraph" | graph formed by the evolution process, with no merging between different time steps |
"EvolutionGraphStructure" | evolution graph without labeling |
"EvolutionGraphFull" | graph formed by the evolution process, including equivalent events |
"EvolutionGraphFullStructure" | full evolution graph without labeling |
"EvolutionGraphUnmerged" | graph formed by the evolution process, with no merging of equivalent states |
"EvolutionGraphUnmergedStructure" | unmerged evolution graph without labeling |
"EvolutionGraphWeighted" | graph formed by the evolution process, with edges weighted by event multiplicity |
"EvolutionGraphWeightedStructure" | weighted evolution graph without labeling |
"StatesGraph" | graph of how each distinct state leads to other states |
"StatesGraphStructure" | states graph without labeling |
"AllEventsList" | the list of all events that occur at each successive step |
"EvolutionEventsGraph" | graph showing the evolution process with updating events explicitly included |
"EvolutionEventsGraphStructure" | evolution events graph without labeling |
"CausalGraph" | graph of causal relationships between updating events |
"CausalGraphStructure" | causal graph without labeling |
"EvolutionCausalGraph" | combined graph of evolution process and causal relationships between events |
"EvolutionCausalGraphStructure" | evolution causal graph without labeling |
"CausalGraphInstances" | list of distinct causal graphs for all possible choices of event sequences |
"CausalGraphStructureInstances" | causal graph instances without labeling |
"EvolutionCausalGraphInstances" | list of distinct evolution causal graphs for all possible choices of event sequences |
"EvolutionCausalGraphStructureInstances" | evolution causal graph instances without labeling |
"BranchPairsList" | list of all branch pairs (i.e. critical pairs) generated in the states graph |
"NewBranchPairsList" | list of all new branch pairs generated at each successive step |
"EvolutionBranchPairsList" | list of all branch pairs generated in the evolution graph |
"NewEvolutionBranchPairsList" | list of all new evolution branch pairs generated at each successive step |
"BranchPairEventsList" | list of all events yielding branch pairs |
"NewBranchPairEventsList" | list of all events yielding new branch pairs at each successive step |
"EvolutionBranchPairEventsList" | list of all events yielding evolution branch pairs |
"NewEvolutionBranchPairEventsList" | list of all events yielding new evolution branch pairs at each successive step |
"BranchialGraph" | graph of branch pair ancestry at a given step |
"BranchialGraphStructure" | branchial graph without labeling |
"AllStatesBranchialGraph" | graph of branch pair ancestry across all steps |
"AllStatesBranchialGraphStructure" | all states branchial graph without labeling |
"EvolutionBranchialGraph" | graph of evolution branch pair ancestry at a given step |
"EvolutionBranchialGraphStructure" | evolution branchial graph without labeling |
"AllStatesEvolutionBranchialGraph" | graph of evolution branch pair ancestry |
"AllStatesEvolutionBranchialGraphStructure" | all states evolution branchial graph without labeling |
"EventBranchialGraph" | graph of branch pair event ancestry at a given step |
"EventBranchialGraphStructure" | event branchial graph without labeling |
"AllEventsBranchialGraph" | graph of branch pair event ancestry across all steps |
"AllEventsBranchialGraphStructure" | all events branchial graph without labeling |
"BranchPairResolutionsList" | association of all resolved and unresolved branch pairs up to a given step |
"EvolutionBranchPairResolutionsList" | association of all resolved and unresolved evolution branch pairs up to a given step |
"CausalInvariantQ" | whether the system is causal invariant (all branch pairs converge) |
"EvolutionCausalInvariantQ" | whether the system is evolution causal invariant (all evolution branch pairs converge) |
"KnuthBendixCompletion" | list of Knuth–Bendix completion rules required to force causal invariance |
"EvolutionKnuthBendixCompletion" | list of Knuth–Bendix completion rules required to force evolution causal invariance |
"StateWeights" | list of weights for all vertices in the states graph |
Except for "AllStatesListUnmerged", "EvolutionGraphUnmerged" and states containing state IDs, identical states are always merged at each step.
In "StatesGraph", all instances of a given state at any step are merged. Different updating events that connect the same states will only be shown as separate edges if "IncludeEventInstances" is set to
True.
Events are represented in the form {rule,input,rest}, where rule is the rule used in the updating event, input is the part of the state to which the rule is applied and rest is the remainder of the state. For substitution systems, rest is given in the form {prefix,suffix}.
Options for ResourceFunction["MultiwayGroup"] include:
"Abelian" | False | whether the group is abelian |
"StyleEdges" | True | whether to style edges according to generators, relations, identity, inverse and commutativity |
"AppendOnly" | False | whether to apply generators only to the end of the word |
"IncludeStepNumber" | False | whether to label states and events with their respective step numbers |
"IncludeStateID" | False | whether to label states and events with unique IDs |
"IncludeInitializationEvents" | False | whether to include pseudoevents that set up initial conditions |
"IncludeEventInstances" | False | whether to show distinct updating events that connect the same states as separate edges |
"IncludeStateWeights" | False | whether to weight state vertices by their rate of occurrence at a particular time step |
"IncludeStatePathWeights" | False | whether to weight state vertices by the number of distinct evolution paths that lead to them |
"StateRenderingFunction" | Automatic | how to label states that appear in graphs |
"EventRenderingFunction" | Automatic | how to label events that appear in graphs |
MaxItems | Infinity | how many instances of a causal graph or evolution causal graph to return |
"GivePredecessors" | False | whether to label branch pairs with their predecessor state |
"GiveResolvents" | False | whether to label branch pairs with their resolvent state |
"IncludeSelfPairs" | False | whether to include trivial branch pairs |
"IncludeFullBranchialSpace" | False | whether to show all possible states in a given branchial graph |
"LineThickness" | 1 | absolute line thickness for graph edges |
Possible settings for "StateRenderingFunction" and "EventRenderingFunction" include:
Inherited | use the explicit vertex name as the label |
None | use no label for the vertex |
"shape" | use a shape from the VertexShapeFunction collection |
func | apply the function func to the name of the vertex |
For "CausalGraphInstances" and "EvolutionCausalGraphInstances", the option
MaxItems→n can be used to get only the first
n possible instances of causal graphs.
By default, states graphs are styled using red edges to indicate the application of a generator, green edges to indicate the application of a relation, cyan edges to indicate the application of the identity element, magenta edges to indicate the application of an inverse element and blue edges to indicate the application of commutativity.