"Source: Text/Incidence/MultiGraph.text";
"Line: 1374";
"Date: Fri Sep 26 12:10:10 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Incidence/MultiGraph.text, line: 1374
// Example: H163E8 ()
print "Example: H163E8";
ei := GetEchoInput();
SetEchoInput(true);
S := {@ "a", "b", "c" @};
G := MultiDigraph< S | < 1, {2, 3} >, < 1, {2} >, < 2, {2, 3} > >;
G;

V := VertexSet(G);
for u in V do
    AssignLabel(~G, u, Random([ "X", "Y", "Z" ]));
end for;

E := EdgeSet(G);
I := Indices(G);
for i in I do
    AssignLabel(~G, E.i, Random([ "D", "E", "F" ]));
    if not InitialVertex(E.i) eq TerminalVertex(E.i) then
        AssignCapacity(~G, E.i, Random(1, 3));
    end if;
    AssignWeight(~G, E.i, Random(1, 3));
end for;

VertexLabels(G);
EdgeLabels(G);
EdgeCapacities(G);
EdgeWeights(G);

V := VertexSet(G);
H := sub< G | V!1, V!2 >;
H;

for u in VertexSet(H) do
    assert Label(u) eq Label(V!u);
end for;

for e in EdgeSet(H) do
    u := InitialVertex(e);
    v := TerminalVertex(e);

    assert SequenceToSet(Labels(Edges(u, v)))
    eq SequenceToSet(Labels(Edges(V!u, V!v)));
    assert SequenceToSet(Capacities(Edges(u, v)))
    eq SequenceToSet(Capacities(Edges(V!u, V!v)));
    assert SequenceToSet(Weights(Edges(u, v)))
    eq SequenceToSet(Weights(Edges(V!u, V!v)));
end for;
SetEchoInput(ei);
