SetReplace
SetReplace copied to clipboard
Implementation of Physics Project WFR functions
The problem
There are many functions in the Wolfram Function Repository which would be handy to have in SetReplace.
It would be useful to make these functions more reliable, test them, possibly improve the design, and move them to SetReplace.
This issue tracks this effort. If you'd like to implement a particular function, create another issue just for that function, and link it next to one of the checkboxes below. It's best to discuss the API for the new functions before starting to implement them. The design of some of the functions needs improvement. Not all WFR functions should map into functions. It's usually better to integrate a function into an existing function (such as a WolframModel
property). Some of them don't currently work correctly, so be careful. If you know a useful WFR function that is not mentioned below, please add it to the list.
Note that MultiwaySystem
is intentionally not included in the list below. We do want to implement it, but through the Local Multiway System, i.e., as a part of the WolframModel
function. Similarly, functions like CausalInvariantQ
are not included as well, because they should instead be properties of the WolframModelEvolutionObject
, and have separate issues already.
List of Functions
Canonicalization/Isomorphism
- [ ]
CanonicalWolframModelRule
- [ ]
CanonicalHypergraph
- [x]
IsomorphicHypergraphQ
#480 - [ ]
FindHypergraphIsomorphism
#77 With a name like this, it should only find one possible isomorphism. If we want a function that finds all isomorphism (the format for which should definitely be different from the current WFR implementation), the name should be different.
Enumeration
For all functions below, I think we should also allow a single integer as the argument, specifying the complexity, Length[Flatten[# /. Rule -> List]] &
(assuming atom names are not lists), which would then produce all rules/hypergraphs up to that complexity, including systems of multiple rules.
- [ ]
EnumerateWolframModelRules
#57 - [ ]
RandomWoflramModelRule
- [ ]
EnumerateHypergraphs
- [x]
RandomHypergraph
#510
Rule Properties
Hypergraph Analysis Utilities
- [ ]
ConnectedHypergraphQ
#524 - [ ]
HypergraphAdjacencyMatrix
- [ ]
HypergraphIncidenceMatrix
would be useful as well. - [ ]
HypergraphNeighborhoods
#413 It should return hypergraphs (lists of lists), not graphs. - [ ]
HypergraphNeighborhoodVolumes
I think we should define volume as the count of expressions, not atoms, so it should compute that instead. Maybe, we can have a second argument which would be either"Expression"
or"Atom"
depending on how we want to define the volume. - [x]
HypergraphToGraph
#488 There are multiple ways to do it. Perhaps a second argument would be useful to specify. - [ ]
GraphFunctionPlot
- [ ]
HypergraphFunctionPlot
should do the same, but for hypergraphs.
Graph/Hypergraph Construction
- [ ]
HexagonalGridGraph
- [ ]
HexagonalTorusGraph
Should be merged with the previous function, similar toGeneralizedGridGraph
. - [ ]
BuckyballGraph
- [ ]
GeodesicSphereGraph
- [ ]
RegularHyperbolicTilingGraph