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

theorem
  the_Edges_of G = G.loops() iff G.allForests() = the set of all createGraph(V)
    where V is non empty Subset of the_Vertices_of G
proof
  set S = the set of all createGraph(V)
    where V is non empty Subset of the_Vertices_of G;
  hereby
    assume the_Edges_of G = G.loops();
    then A1: G.allForests() is edgeless by Th99;
    now
      let x be object;
      hereby
        assume A2: x in G.allForests();
        then reconsider H = x as plain Subgraph of G by Th78;
        reconsider V = the_Vertices_of H as non empty Subset of
          the_Vertices_of G;
        set H9 = createGraph(V);
        reconsider H9 as plain Subgraph of G;
        A3: the_Vertices_of H = the_Vertices_of H9;
        the_Edges_of H = the_Edges_of H9 by A1, A2;
        then H is Subgraph of H9 & H9 is Subgraph of H by A3, GLIB_000:44;
        then H = H9 by GLIB_000:87, GLIB_009:44;
        hence x in S;
      end;
      assume x in S;
      then consider V being non empty Subset of the_Vertices_of G such that
        A4: x = createGraph(V);
      thus x in G.allForests() by A4, Th81;
    end;
    hence G.allForests() = S by TARSKI:2;
  end;
  assume A5: G.allForests() = S;
  now
    let H be _Graph;
    assume H in G.allForests();
    then consider V being non empty Subset of the_Vertices_of G such that
      A6: H = createGraph(V) by A5;
    thus H is edgeless by A6;
  end;
  then G.allForests() is edgeless by GLIB_014:def 12;
  hence thesis by Th99;
end;
