reserve G, G1, G2 for _Graph, H for Subgraph of G;

theorem Th175:
  for G2 being loopless connected _Graph
  holds G2.allSpanningTrees() c= G1.allSpanningTrees()
  implies G2 is spanning Subgraph of G1
proof
  let G2 be loopless connected _Graph;
  assume A1: G2.allSpanningTrees() c= G1.allSpanningTrees();
  set H0 = the plain spanning Tree-like Subgraph of G2;
  H0 in G2.allSpanningTrees() by Th168;
  then H0 is spanning Subgraph of G1 by A1, Th168;
  then A2: the_Vertices_of G1 = the_Vertices_of H0 by GLIB_000:def 33
    .= the_Vertices_of G2 by GLIB_000:def 33;
  now
    let x be object;
    assume A3: x in the_Edges_of G2;
    x in the_Edges_of G2 \ G2.loops() by A3;
    then consider T being plain spanning Tree-like Subgraph of G2 such that
      A4: x in the_Edges_of T by Th167;
    T in G2.allSpanningTrees() by Th168;
    then T is Subgraph of G1 by A1, Th168;
    then the_Edges_of T c= the_Edges_of G1 by GLIB_000:def 32;
    hence x in the_Edges_of G1 by A4;
  end;
  then A5: the_Edges_of G2 c= the_Edges_of G1 by TARSKI:def 3;
  now
    let x be set;
    assume A6: x in the_Edges_of G2;
    x in the_Edges_of G2 \ G2.loops() by A6;
    then consider T being plain spanning Tree-like Subgraph of G2 such that
      A7: x in the_Edges_of T by Th167;
    T in G2.allSpanningTrees() by Th168;
    then A8: T is Subgraph of G1 by A1, Th168;
    thus (the_Source_of G2).x = (the_Source_of T).x by A7, GLIB_000:def 32
      .= (the_Source_of G1).x by A7, A8, GLIB_000:def 32;
    thus (the_Target_of G2).x = (the_Target_of T).x by A7, GLIB_000:def 32
      .= (the_Target_of G1).x by A7, A8, GLIB_000:def 32;
  end;
  hence thesis by A2, A5, GLIB_000:def 32, GLIB_000:def 33;
end;
