
theorem Th42:
  for G being _Graph, W1, W3 being Walk of G, e being object
  st e Joins W3.first(),W3.last(),G &
    G.walkOf(W3.first(),e,W3.last()) is_odd_substring_of W1, 0
  holds e in W1.replaceEdgeWith(e, W3).edges() iff
    e in W1.cut(1,W1.findFirstVertex(G.walkOf(W3.first(),e,W3.last()))).edges()
      or e in W3.edges() or e in W1.cut(W1.findLastVertex(
        G.walkOf(W3.first(),e,W3.last())), len W1).edges()
proof
  let G be _Graph, W1,W3 be Walk of G;
  let e be object;
  assume that
    A1: e Joins W3.first(),W3.last(),G and
    A2: G.walkOf(W3.first(),e,W3.last()) is_odd_substring_of W1, 0;
  set W2 = G.walkOf(W3.first(),e,W3.last());
  set W9 = W1.replaceWith(W2,W3);
  A3: W9 =  W1.replaceEdgeWith(e, W3) by A1, A2, Def6;
  A4: W2.first() = W3.first() & W2.last() = W3.last() by A1, GLIB_001:15;
  hereby
    assume e in W1.replaceEdgeWith(e, W3).edges();
    then e in W1.cut(1,W1.findFirstVertex(W2)).edges() \/ W3.edges() \/
      W1.cut(W1.findLastVertex(W2), len W1).edges() by A2, A3, A4, Th41;
    then e in W1.cut(1,W1.findFirstVertex(W2)).edges() \/ W3.edges() or
      e in W1.cut(W1.findLastVertex(W2), len W1).edges() by XBOOLE_0:def 3;
    hence e in W1.cut(1,W1.findFirstVertex(W2)).edges() or e in W3.edges() or
      e in W1.cut(W1.findLastVertex(W2), len W1).edges() by XBOOLE_0:def 3;
  end;
  assume e in W1.cut(1,W1.findFirstVertex(W2)).edges() or e in W3.edges() or
    e in W1.cut(W1.findLastVertex(W2), len W1).edges();
  then e in W1.cut(1,W1.findFirstVertex(W2)).edges() \/ W3.edges() or
    e in W1.cut(W1.findLastVertex(W2), len W1).edges() by XBOOLE_0:def 3;
  then e in W1.cut(1,W1.findFirstVertex(W2)).edges() \/ W3.edges() \/
    W1.cut(W1.findLastVertex(W2), len W1).edges() by XBOOLE_0:def 3;
  hence thesis by A2, A3, A4, Th41;
end;
