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 Th39:
  for G being _finite connected _Graph holds G.order() <= G.size() + 1
proof
  let G be _finite connected _Graph;
  defpred P[_finite _Graph] means $1 is connected implies $1.order() <= $1
  .size() + 1;
A1: now
    let k be non zero Nat;
    assume
A2: for Gk being _finite _Graph st Gk.order() = k holds P[Gk];
    let Gk1 be _finite _Graph;
    assume
A3: Gk1.order() = k+1;
    now
A4:   now
        assume Gk1.order() = 1;
        then k+1 = 0+1 by A3;
        hence contradiction;
      end;
      assume Gk1 is connected;
      then reconsider Gk19 = Gk1 as non _trivial _finite connected _Graph
        by A4,GLIB_000:26;
      consider v1,v2 being Vertex of Gk19 such that
      v1 <> v2 and
A5:   not v1 is cut-vertex and
      not v2 is cut-vertex by Lm21;
      set Gkb = the removeVertex of Gk19, v1;
A6:   Gkb.order() + 1 = k + 1 & Gkb.size()+card v1.edgesInOut()=Gk1
      .size() by A3,GLIB_000:48;
      not v1 is isolated by Th1;
      then v1.edgesInOut() <> {} by GLIB_000:def 49;
      then 0 < card v1.edgesInOut() by NAT_1:3;
      then
A7:   0+1 <= card v1.edgesInOut() by NAT_1:13;
      Gkb is connected by A5,Lm20;
      then k <= Gk1.size() - card v1.edgesInOut() + 1 by A2,A6;
      then k+1 <= Gk1.size() + 1 - card v1.edgesInOut() + card v1
      .edgesInOut() by A7,XREAL_1:7;
      hence Gk1.order() <= Gk1.size() + 1 by A3;
    end;
    hence P[Gk1];
  end;
A8: for G being _finite _Graph st G.order() = 1 holds P[G] by NAT_1:12;
  for G being _finite _Graph holds P[G] from GLIB_000:sch 1(A8,A1);
  hence thesis;
end;
