This method is meant for moving a
HyperGraph that is defined over one ring to another ring R. The parameter L must be a list containing variables of R that should replace the vertices of H. For the most basic way to use this method, see the first example:
i1 : P = QQ[a,b,c];
|
i2 : H = hyperGraph({a*b,b*c});
|
i3 : S = QQ[x,y,z,w];
|
i4 : changeRing(H,S,{x,z,y})
o4 = HyperGraph{edges => {{y, z}, {z, x}}}
ring => S
vertices => {x, y, z, w}
o4 : HyperGraph
|
In the example above, a is replaced with x, b is replaced with z, and c is replaced with y. A more complex situation arises when two vertices of H are replaced by the same variable.
i5 : P = QQ[a,b,c];
|
i6 : H = hyperGraph({a*b*c});
|
i7 : G = hyperGraph({a*b,b*c});
|
i8 : S = QQ[x,y,z,w];
|
i9 : changeRing(H,S,{x,y,x})
o9 = HyperGraph{edges => {{y, x}} }
ring => S
vertices => {x, y, z, w}
o9 : HyperGraph
|
i10 : changeRing(G,S,{x,y,x})
o10 = HyperGraph{edges => {{y, x}} }
ring => S
vertices => {x, y, z, w}
o10 : HyperGraph
|
Note that duplicate variables are removed from edges after substitution. Duplicate edges are also reduced to a single edge. As all HyperGraphs in this package have the property that no edge is a subset of any other edge, some edges may need to be dropped after substitution. This happens in the next example.
i11 : P = QQ[a,b,c];
|
i12 : H = hyperGraph({a*b,b*c});
|
i13 : S = QQ[x,y];
|
i14 : changeRing(H,S,{x,y,y})
o14 = HyperGraph{edges => {{y}} }
ring => S
vertices => {x, y}
o14 : HyperGraph
|
i15 : changeRing(H,S,{x,y,y},MaximalEdges=>true)
o15 = HyperGraph{edges => {{y, x}} }
ring => S
vertices => {x, y}
o15 : HyperGraph
|
By default,
changeRing uses minimal edges that appear after substitution to construct its output. The optional argument
MaximalEdges allows one to get the maximal edges instead.