SetReplace icon indicating copy to clipboard operation
SetReplace copied to clipboard

Implementation of Physics Project WFR functions

Open maxitg opened this issue 4 years ago • 0 comments

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

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.

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

Utilities

maxitg avatar Oct 14 '20 03:10 maxitg