reserve G,G1,G2 for _Graph;
reserve e,x,y for set;
reserve v,v1,v2 for Vertex of G;
reserve W for Walk of G;

theorem Th45:
  for G being _finite _Graph holds G is Tree-like iff G is acyclic
  & G.order() = G.size() + 1
proof
  defpred P[Nat] means for G being _finite acyclic _Graph st G.order() = $1 & G
  .order() = G.size() + 1 holds G is connected;
  let G be _finite _Graph;
  hereby
    defpred P[Nat] means for T being _finite Tree-like _Graph st
      T.order() = $1
    holds $1 = T.size() + 1;
    assume
A1: G is Tree-like;
    hence G is acyclic;
    now
      let T be _finite Tree-like _Graph;
      set VT = the_Vertices_of T, ET = the_Edges_of T;
      assume T.order() = 1;
      then card VT = 1 by GLIB_000:def 24;
      then consider v being object such that
A2:   VT = {v} by CARD_2:42;
      reconsider v as Vertex of T by A2,TARSKI:def 1;
      now
        given e being object such that
A3:     e in ET;
        (the_Target_of T).e in {v} by A2,A3,FUNCT_2:5;
        then
A4:     (the_Target_of T).e = v by TARSKI:def 1;
        (the_Source_of T).e in {v} by A2,A3,FUNCT_2:5;
        then (the_Source_of T).e = v by TARSKI:def 1;
        then e Joins v,v,T by A3,A4,GLIB_000:def 13;
        then T.walkOf(v,e,v) is Cycle-like by GLIB_001:156;
        hence contradiction by Def2;
      end;
      then card ET = 0 by CARD_1:27,XBOOLE_0:def 1;
      then T.size() = 0 by GLIB_000:def 25;
      hence 1 = T.size() + 1;
    end;
    then
A5: P[1];
    now
      let k be non zero Nat;
      assume
A6:   for T being _finite Tree-like _Graph st T.order() = k holds k =
      T.size() + 1;
      let T be _finite Tree-like _Graph;
      assume
A7:   T.order() = k+1;
      then T.order() <> 1 by XCMPLX_1:3;
      then reconsider aT = T as non _trivial _finite Tree-like _Graph by
GLIB_000:26;
      set v = the endvertex Vertex of aT;
      set T2 = the removeVertex of aT,v;
      T2.order() + 1 - 1 = k + 1 - 1 by A7,GLIB_000:48;
      then
A8:   k = T2.size() + 1 by A6;
      card v.edgesInOut() = v.degree() by GLIB_000:19
        .= 1 by GLIB_000:def 52;
      hence k+1 = T.size() + 1 by A8,GLIB_000:48;
    end;
    then
A9: for k being non zero Nat st P[k] holds P[k+1];
    for k being non zero Nat holds P[k] from NAT_1:sch 10(A5,A9);
    hence G.order() = G.size() + 1 by A1;
  end;
  assume that
A10: G is acyclic and
A11: G.order() = G.size() + 1;
  now
    let k be non zero Element of NAT;
    assume
A12: for G being _finite acyclic _Graph st G.order() = k & G.order() =
    G.size() + 1 holds G is connected;
    let G be _finite acyclic _Graph;
    assume that
A13: G.order() = k+1 and
A14: G.order() = G.size()+1;
    now
      assume G.order() = 1;
      then 0 + 1 = k + 1 by A13;
      hence contradiction;
    end;
    then reconsider aG = G as non _trivial _finite acyclic _Graph
      by GLIB_000:26;
    the_Edges_of G <> {} by A13,A14,CARD_1:27,GLIB_000:def 25;
    then consider v,v2 being Vertex of aG such that
    v <> v2 and
A15: v is endvertex and
    v2 is endvertex and
    v2 in aG.reachableFrom(v) by Lm23;
    set G2 = the removeVertex of G,v;
A16: G2.order() + 1 = aG.order() & G2.size() + card v.edgesInOut() = aG
    .size() by GLIB_000:48;
    card v.edgesInOut() = v.degree() by GLIB_000:19
      .= 1 by A15,GLIB_000:def 52;
    then
A17: G2 is connected by A12,A13,A14,A16;
    consider e being object such that
A18: v.edgesInOut() = {e} and
A19: not e Joins v,v,G by A15,GLIB_000:def 51;
    e in v.edgesInOut() by A18,TARSKI:def 1;
    hence G is connected by A17,A19,Th2;
  end;
  then
A20: for k being non zero Nat st P[k] holds P[k+1];
  now
    let G be _finite acyclic _Graph;
    assume that
A21: G.order() = 1 and
    G.order() = G.size() + 1;
    consider v being Vertex of G such that
A22: the_Vertices_of G = {v} by A21,GLIB_000:27;
    now
      let v1,v2 be Vertex of G;
      v1 = v & v2 = v by A22,TARSKI:def 1;
      then G.walkOf(v) is_Walk_from v1,v2 by GLIB_001:13;
      hence ex W being Walk of G st W is_Walk_from v1,v2;
    end;
    hence G is connected;
  end;
  then
A23: P[1];
  for k being non zero Nat holds P[k] from NAT_1:sch 10(A23,A20);
  then G is connected by A10,A11;
  hence thesis by A10;
end;
