next | previous | forward | backward | up | top | index | toc | Macaulay2 website
EdgeIdeals :: changeRing

changeRing -- replaces vertices with variables of a different ring



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.

See also

Ways to use changeRing :

For the programmer

The object changeRing is a method function with options.