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}, {x, z}}} 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 => {{x, y}} } ring => S vertices => {x, y, z, w} o9 : HyperGraph |
i10 : changeRing(G,S,{x,y,x}) o10 = HyperGraph{edges => {{x, y}} } 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 => {{x, y}} } 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.
The object changeRing is a method function with options.