SupposeNot / RAMP

Research Assistant for Maps and Polytopes
4 stars 0 forks source link

Make voltage graphs easier to work with #144

Open CunningGabe opened 2 years ago

CunningGabe commented 2 years ago
  1. It would be nice to be able to assign voltages to only some of the darts of a labeled graph, and assume that the remaining darts have trivial voltage.
  2. One thing that might help with the above... in the context of pre-maniplexes, we can identify a dart by its starting point and its color. (e.g. in Voltage Operations, the dart of color i that starts at x is denoted ^i x). So once we have a premaniplex type, we may want something like Dart(i, x, M) (or maybe a more verbose name)
  3. Another thing that might help is to have some constructors for voltage graphs that work like constructors for edge-labeled graphs, except that each dart may optionally have a voltage. So some arcs would just be [[1,2], 0] to indicate trivial voltage, while others would be [[1,2], 1, g] to indicate voltage g.
SupposeNot commented 2 years ago

The documentation here could use some work to improve clarity. For example:

GraphFromListOfEdges(list, list) Returns: IsGraph. Note this returns an undirected graph.

Given a list of vertices and a list of (directed) edges (represented as ordered pairs), this outputs the simple underlying graph with the appropriate vertex and directed-edge set.

Here we have a simple complete graph on 4 vertices

The inputs should be distinguishable, so you can tell which list goes with which clause in the description.

SupposeNot commented 2 years ago

I was poking at these a bit... not sure how instructive this example is, but was a nice check on my work in this bug fix.

gap> etain0:=[[[1],0],[[2,3],0],[[4,5],0],[[6],0],[[7],0]];
[ [ [ 1 ], 0 ], [ [ 2, 3 ], 0 ], [ [ 4, 5 ], 0 ], [ [ 6 ], 0 ], [ [ 7 ], 0 ] ]
gap> etain1:=[[[1,2],1],[[3],1],[[4],1],[[5,6],1],[[7],1]];
[ [ [ 1, 2 ], 1 ], [ [ 3 ], 1 ], [ [ 4 ], 1 ], [ [ 5, 6 ], 1 ], [ [ 7 ], 1 ] ]
gap> etain2:=[[[1],2],[[2,4],2],[[3,5],2],[[6,7],2]];
[ [ [ 1 ], 2 ], [ [ 2, 4 ], 2 ], [ [ 3, 5 ], 2 ], [ [ 6, 7 ], 2 ] ]
gap> etain:=Union(etain0,etain1,etain2);
[ [ [ 1 ], 0 ], [ [ 1 ], 2 ], [ [ 1, 2 ], 1 ], [ [ 2, 3 ], 0 ], [ [ 2, 4 ], 2 ], [ [ 3 ], 1 ], [ [ 3, 5 ], 2 ], [ [ 4 ], 1 ], 
  [ [ 4, 5 ], 0 ], [ [ 5, 6 ], 1 ], [ [ 6 ], 0 ], [ [ 6, 7 ], 2 ], [ [ 7 ], 0 ], [ [ 7 ], 1 ] ]
gap> VoltageOperator(etain,"[r0,r2,id,id,id,r0,id,r1,id,id,r1,id,r1,r0]",Cube(3));
3-maniplex with 336 flags
gap> last=Lace(Cube(3));
true
gap> VoltageOperator(etain,"[r0,r2,id,id,id,r0,id,r1,id,id,r1,id,r1,r0]",Dodecahedron())=Lace(Dodecahedron());
true
SupposeNot commented 2 years ago

I learned today that voltage graphs are sometimes called gain graphs. In fact, this is apparently super common. We should probably add suitable documentation and alternate method names to support this language (like SUPER common).

CunningGabe commented 2 years ago

Do you know a paper you can point us to that would have names/notation we might need other than setting up the synonym GainGraph ?

SupposeNot commented 2 years ago

No, but Klara would. I'll ask her.

SupposeNot commented 2 years ago

From Klara:

There is a dynamical survey http://people.math.binghamton.edu/zaslav/Bsg/index.html