
theorem Th97:
  for G being chordal _Graph, a,b being Vertex of G st a<>b & not
a,b are_adjacent for S being VertexSeparator of a,b st S is minimal & S is non
  empty for H being inducedSubgraph of G,S holds H is complete
proof
  let G be chordal _Graph;
  set tVG = the_Vertices_of G;
  let a,b be Vertex of G such that
A1: a<>b and
A2: not a,b are_adjacent;
  let S be VertexSeparator of a,b such that
A3: S is minimal and
A4: S is non empty;
  set Gns = the removeVertices of G,S;
  reconsider sa = a, sb = b as Vertex of Gns by A1,A2,Th76;
  set A = Gns.reachableFrom(sa), B = Gns.reachableFrom(sb);
A5: A/\B = {} by A1,A2,Th75;
  set Gb = the inducedSubgraph of Gns,B;
  set Ga = the inducedSubgraph of Gns,A;
A6: the_Vertices_of Ga = A by GLIB_000:def 37;
A7: the_Vertices_of Gb = B by GLIB_000:def 37;
A8: B /\ S = {} by A1,A2,Th74;
A9: A/\S = {} by A1,A2,Th74;
  the_Vertices_of Gns c= tVG;
  then reconsider A, B as non empty Subset of tVG by XBOOLE_1:1;
  let Gs be inducedSubgraph of G,S;
  let x,y be Vertex of Gs such that
A10: x <> y and
A11: not x,y are_adjacent;
  reconsider xg = x, yg = y as Vertex of G by GLIB_000:42;
A12: S = the_Vertices_of Gs by A4,GLIB_000:def 37;
  then
A13: ex xag being Vertex of G st xag in A & xg,xag are_adjacent by A1,A2,A3
,Th81;
  set Bx = B\/{xg}, Ax = A\/{xg};
  set Gbx = the inducedSubgraph of G,Bx;
  set Gax = the inducedSubgraph of G,Ax;
  set xy = {xg, yg};
A14: the_Vertices_of Gbx = Bx by GLIB_000:def 37;
  now
    let x be object such that
A15: x in A;
    not x in S by A9,A15,XBOOLE_0:def 4;
    hence x in tVG \ S by A15,XBOOLE_0:def 5;
  end;
  then
A16: A c= tVG \ S;
  consider yag being Vertex of G such that
A17: yag in A and
A18: yg,yag are_adjacent by A1,A2,A3,A12,Th81;
A19: yag in Ax by A17,XBOOLE_0:def 3;
  set Gb1 = the inducedSubgraph of G,B\/{x}\/{y};
  set Ga1 = the inducedSubgraph of G,A\/{x}\/{y};
A20: the_Vertices_of Gax = Ax by GLIB_000:def 37;
  not a in S by A1,A2,Def8;
  then
A21: tVG\S is non empty Subset of tVG by XBOOLE_0:def 5;
  then reconsider Ga as inducedSubgraph of G,A by A16,Th29;
A22: not y in {x} by A10,TARSKI:def 1;
  now
    let x be object such that
A23: x in B;
    not x in S by A8,A23,XBOOLE_0:def 4;
    hence x in tVG \ S by A23,XBOOLE_0:def 5;
  end;
  then
A24: B c= tVG \ S;
  then reconsider Gb as inducedSubgraph of G,B by A21,Th29;
  y in xy by TARSKI:def 2;
  then
A25: y in A\/xy by XBOOLE_0:def 3;
A26: ex xbg being Vertex of G st xbg in B & xg,xbg are_adjacent by A1,A2,A3,A12
,Th82;
  not x in B by A24,A12,XBOOLE_0:def 5;
  then x in G.AdjacentSet(the_Vertices_of Gb) by A7,A26;
  then
A27: Gbx is connected by Th56;
  y in xy by TARSKI:def 2;
  then
A28: y in B\/xy by XBOOLE_0:def 3;
  consider ybg being Vertex of G such that
A29: ybg in B and
A30: yg,ybg are_adjacent by A1,A2,A3,A12,Th82;
A31: B\/{x}\/{y} = B\/({x}\/{y}) by XBOOLE_1:4
    .= B\/xy by ENUMSET1:1;
  then
A32: the_Vertices_of Gb1 c= B\/xy by GLIB_000:def 37;
  x in xy by TARSKI:def 2;
  then x in B\/xy by XBOOLE_0:def 3;
  then reconsider xb = x, yb = y as Vertex of Gb1 by A31,A28,GLIB_000:def 37;
A33: ybg in Bx by A29,XBOOLE_0:def 3;
  not y in B by A24,A12,XBOOLE_0:def 5;
  then not yg in the_Vertices_of Gbx by A14,A22,XBOOLE_0:def 3;
  then y in G.AdjacentSet(the_Vertices_of Gbx) by A14,A30,A33;
  then Gb1 is connected by A27,Th56;
  then consider Wb being Walk of Gb1 such that
A34: Wb is_Walk_from yb,xb;
  not x in A by A16,A12,XBOOLE_0:def 5;
  then x in G.AdjacentSet(the_Vertices_of Ga) by A6,A13;
  then
A35: Gax is connected by Th56;
A36: A\/{x}\/{y} = A\/({x}\/{y}) by XBOOLE_1:4
    .= A\/xy by ENUMSET1:1;
  then
A37: the_Vertices_of Ga1 c= A\/xy by GLIB_000:def 37;
  x in xy by TARSKI:def 2;
  then x in A\/xy by XBOOLE_0:def 3;
  then reconsider xa = x, ya = y as Vertex of Ga1 by A36,A25,GLIB_000:def 37;
A38: not y in {x} by A10,TARSKI:def 1;
  not y in A by A16,A12,XBOOLE_0:def 5;
  then not yg in the_Vertices_of Gax by A20,A38,XBOOLE_0:def 3;
  then y in G.AdjacentSet(the_Vertices_of Gax) by A20,A18,A19;
  then Ga1 is connected by A35,Th56;
  then consider Wa being Walk of Ga1 such that
A39: Wa is_Walk_from xa,ya;
A40: (A\/xy)/\(B\/xy) = A/\B\/xy by XBOOLE_1:24
    .= xy by A5;
A41: Wa.last() = ya by A39;
A42: Wa.first() = xa by A39;
A43: Wb.last() = xa by A34;
A44: Wb.first() = ya by A34;
  consider Pb being Path of Gb1 such that
A45: Pb is_Walk_from Wb.first(),Wb.last() and
A46: Pb is minlength by Th38;
  consider Pa being Path of Ga1 such that
A47: Pa is_Walk_from Wa.first(),Wa.last() and
A48: Pa is minlength by Th38;
  reconsider Pag = Pa, Pbg = Pb as Path of G by GLIB_001:175;
A49: Pbg.1 = yg by A44,A45;
  Pbg.vertices() = Pb.vertices() by GLIB_001:98;
  then
A50: Pbg.vertices() c= B\/xy by A32;
  Pag.vertices() = Pa.vertices() by GLIB_001:98;
  then Pag.vertices() c= A\/xy by A37;
  then
A51: Pag.vertices() /\ Pbg.vertices() c= xy by A50,A40,XBOOLE_1:27;
  set P = Pag.append(Pbg);
A52: Pag.len Pag = yg by A41,A47;
A53: Pbg.len Pbg = xg by A43,A45;
A54: Pbg.last() = Pbg.len Pbg;
  then
A55: x in Pbg.vertices() by A53,GLIB_001:88;
A56: Pbg.first() = Pbg.1;
  then
A57: y in Pbg.vertices() by A49,GLIB_001:88;
A58: Pbg is non trivial by A10,A56,A54,A49,A53,GLIB_001:127;
A59: Pbg is open by A10,A49,A53;
A60: not Pbg is Cycle-like by A10,A56,A54,A49,A53,GLIB_001:def 24;
A61: not xg,yg are_adjacent by A4,A11,Th44;
  then
A62: Pbg.length() >= 2 by A10,A56,A54,A49,A53,Th45;
A63: Pag.1 = xg by A42,A47;
A64: Pag.edges() misses Pbg.edges()
  proof
    assume Pag.edges() /\ Pbg.edges() <> {};
    then consider e being object such that
A65: e in Pag.edges() /\ Pbg.edges() by XBOOLE_0:def 1;
    e in Pag.edges() by A65,XBOOLE_0:def 4;
    then e in Pa.edges() by GLIB_001:110;
    then consider
    a1, a2 being Vertex of Ga1, na being odd Element of NAT such that
A66: na+2 <= len Pag and
A67: a1 = Pag.na and
    e = Pag.(na+1) and
A68: a2 = Pag.(na+2) and
A69: e Joins a1, a2,Ga1 by GLIB_001:103;
A70: e Joins a1,a2,G by A69,GLIB_000:72;
    e in Pbg.edges() by A65,XBOOLE_0:def 4;
    then e in Pb.edges() by GLIB_001:110;
    then consider
    b1, b2 being Vertex of Gb1, nb being odd Element of NAT such that
    nb+2 <= len Pbg and
    b1 = Pbg.nb and
    e = Pbg.(nb+1) and
    b2 = Pbg.(nb+2) and
A71: e Joins b1, b2,Gb1 by GLIB_001:103;
A72: the_Vertices_of Gb1 = B\/xy by A31,GLIB_000:def 37;
    e Joins b1,b2,G by A71,GLIB_000:72;
    then
A73: a1=b1 & a2=b2 or a1=b2 & a2=b1 by A70;
    then
A74: a1 in B or a1 in xy by A72,XBOOLE_0:def 3;
A75: the_Vertices_of Ga1 = A\/xy by A36,GLIB_000:def 37;
    then
A76: a1 in A or a1 in xy by XBOOLE_0:def 3;
A77: a2 in A or a2 in xy by A75,XBOOLE_0:def 3;
A78: a2 in B or a2 in xy by A73,A72,XBOOLE_0:def 3;
    per cases by A5,A76,A77,A74,A78,TARSKI:def 2,XBOOLE_0:def 4;
    suppose
A79:  a1 = x & a2 = x or a1 = y & a2 = y;
      na < na+2 by XREAL_1:39;
      hence contradiction by A10,A63,A52,A66,A67,A68,A79,GLIB_001:def 28;
    end;
    suppose
      a1 = x & a2 = y or a1 = y & a2 = x;
      hence contradiction by A61,A70,Def3;
    end;
  end;
A80: Pag.first() = Pag.1;
  then
A81: x in Pag.vertices() by A63,GLIB_001:88;
A82: Pag.last() = Pag.len Pag;
  then
A83: len P +1 = len Pag + len Pbg by A52,A56,A49,GLIB_001:28;
A84: Pag.length() >= 2 by A10,A61,A80,A82,A63,A52,Th45;
  P.length() = Pag.length()+Pbg.length() by A82,A52,A56,A49,Th28;
  then P.length() >= 2+2 by A84,A62,XREAL_1:7;
  then P.length() >= 3+1;
  then
A85: P.length() > 3 by NAT_1:13;
A86: Pag is open by A10,A63,A52;
A87: y in Pag.vertices() by A82,A52,GLIB_001:88;
  xy c= Pag.vertices() /\ Pbg.vertices()
  proof
    let a be object;
    assume a in xy;
    then a = x or a = y by TARSKI:def 2;
    hence thesis by A81,A87,A55,A57,XBOOLE_0:def 4;
  end;
  then Pag.vertices() /\ Pbg.vertices() = xy by A51;
  then P is Cycle-like by A63,A52,A86,A49,A53,A59,A58,A64,Th27;
  then P is chordal by A85,Def11;
  then consider m, n being odd Nat such that
A88: m+2 < n and
A89: n <= len P and
A90: P.m <> P.n and
A91: ex e being object st e Joins P.m,P.n,G and
A92: for f being object st f in P.edges() holds not f Joins P.m,P.n,G;
A93: m < n by A88,NAT_1:12;
  consider e being object such that
A94: e Joins P.m,P.n,G by A91;
A95: e Joins P.n,P.m,G by A94;
A96: m in NAT by ORDINAL1:def 12;
A97: not Pag is Cycle-like by A10,A80,A82,A63,A52,GLIB_001:def 24;
A98: 1 <= n by ABIAN:12;
A99: 1 <= m by ABIAN:12;
  per cases;
  suppose
A100: m < len Pag & n <= len Pag;
    then n in dom Pag by A98,FINSEQ_3:25;
   then
A101: P.n = Pag.n by GLIB_001:32;
    m in dom Pag by A99,A100,FINSEQ_3:25;
    then P.m = Pag.m by GLIB_001:32;
    then Pag is chordal by A97,A88,A91,A100,A101,Th84;
    then Pa is chordal by A36,Th86;
    hence contradiction by A48,Th88;
  end;
  suppose
A102: m < len Pag & len Pag < n;
    then
A103: Pag.m in the_Vertices_of Ga1 by A96,GLIB_001:7;
    m in dom Pag by A99,A102,FINSEQ_3:25;
    then
A104: P.m = Pag.m by GLIB_001:32;
A105: not n in dom Pag by A102,FINSEQ_3:25;
    n in dom P by A89,A98,FINSEQ_3:25;
    then consider n1 being Element of NAT such that
A106: n1 < len Pbg and
A107: n = len Pag + n1 by A105,GLIB_001:34;
A108: P.(len Pag +n1) = Pbg.(n1+1) by A82,A52,A56,A49,A106,GLIB_001:33;
    reconsider n1 as even Element of NAT by A107;
    reconsider n11 = n1+1 as odd Element of NAT;
A109: n11 <= len Pbg by A106,NAT_1:13;
    then
A110: Pbg.n11 in the_Vertices_of Gb1 by GLIB_001:7;
    per cases by A37,A32,A103,A110,XBOOLE_0:def 3;
    suppose
A111: Pag.m in A & Pbg.n11 in xy;
      per cases by A63,A52,A111,TARSKI:def 2;
      suppose
A112:   Pbg.n11 = Pag.1;
        now
          assume
A113:     1+2 >= m;
          per cases by A113,XXREAL_0:1;
          suppose
            1+2 > m;
            then 1 >= m by Th4,JORDAN12:2;
            hence contradiction by A90,A99,A104,A107,A108,A112,XXREAL_0:1;
          end;
          suppose
A114:       1+2 = m;
            then
A115:       1+1 < len Pag by A102,XXREAL_0:2;
            then 1+1 in dom Pag by FINSEQ_3:25;
            then
A116:       Pag.(1+1) = P.(1+1) by GLIB_001:32;
            1 < len Pag -1 by A115,XREAL_1:20;
            then 1+0 < (len Pag -1) + len Pbg by XREAL_1:8;
            then
A117:       P.(1+1) in P.edges() by A83,GLIB_001:100,JORDAN12:2;
            1 < len Pag by A99,A102,XXREAL_0:2;
            then Pag.(1+1) Joins Pag.1,Pag.m,G by A114,GLIB_001:def 3
,JORDAN12:2;
            hence contradiction by A92,A104,A107,A108,A112,A116,A117,
GLIB_000:14;
          end;
        end;
        then Pag is chordal by A97,A95,A102,A104,A107,A108,A112,Th84,JORDAN12:2
;
        then Pa is chordal by A36,Th86;
        hence contradiction by A48,Th88;
      end;
      suppose
A118:   Pbg.n11 = Pag.len Pag;
        now
          set L = len Pag;
          assume
A119:     m+2 >= len Pag;
          per cases by A119,XXREAL_0:1;
          suppose
A120:       m+2 = L;
            then
A121:       L = m+1+1;
            then
A122:       m +1 < L by NAT_1:13;
            1<=m+1 by NAT_1:12;
            then m+1 in dom Pag by A122,FINSEQ_3:25;
            then
A123:       Pag.(m+1) = P.(m+1) by GLIB_001:32;
            m < len Pag -1 by A121,NAT_1:13;
            then m+0 < (len Pag -1) + len Pbg by XREAL_1:8;
            then
A124:       P.(m+1) in P.edges() by A83,GLIB_001:100;
            m < L by A122,NAT_1:13;
            then Pag.(m+1) Joins Pag.m,Pag.L,G by A96,A120,GLIB_001:def 3;
            hence contradiction by A92,A104,A107,A108,A118,A123,A124;
          end;
          suppose
            m+2 > len Pag;
            hence contradiction by A102,Th4;
          end;
        end;
        then Pag is chordal by A97,A91,A104,A107,A108,A118,Th84;
        then Pa is chordal by A36,Th86;
        hence contradiction by A48,Th88;
      end;
    end;
    suppose
A125: Pag.m in A & Pbg.n11 in B;
      then reconsider bc = Pb.n11 as Vertex of Gb by GLIB_000:def 37;
      reconsider ac = Pa.m as Vertex of Ga by A125,GLIB_000:def 37;
      set WAB = Gns.walkOf(ac,e,bc);
      e Joins ac,bc,Gns by A16,A24,A94,A104,A107,A108,A125,Th19;
      then
A126: WAB is_Walk_from ac,bc by GLIB_001:15;
      b in B by GLIB_002:9;
      then reconsider bb = b as Vertex of Gb by GLIB_000:def 37;
      a in A by GLIB_002:9;
      then reconsider aa = a as Vertex of Ga by GLIB_000:def 37;
      consider WA being Walk of Ga such that
A127: WA is_Walk_from aa, ac by GLIB_002:def 1;
      consider WB being Walk of Gb such that
A128: WB is_Walk_from bc, bb by GLIB_002:def 1;
      reconsider WA, WB as Walk of Gns by GLIB_001:167;
      reconsider WAs = WA, WBs = WB as Walk of Gns;
A129: WBs is_Walk_from bc, bb by A128;
      set WaB = WAs.append(WAB);
      set Wab = WaB.append(WBs);
      WAs is_Walk_from aa, ac by A127;
      then WaB is_Walk_from aa, bc by A126,GLIB_001:31;
      then Wab is_Walk_from a,b by A129,GLIB_001:31;
      hence contradiction by A1,A2,Def8;
    end;
    suppose
      Pag.m in xy & Pbg.n11 in B;
      then Pag.m = x or Pag.m = y by TARSKI:def 2;
      then
A130: Pag.m = x by A63,A52,A96,A102,GLIB_001:def 28
        .= Pbg.len Pbg by A43,A45;
      now
        set L = len Pbg;
        assume
A131:   n11+2 >= len Pbg;
        per cases by A131,XXREAL_0:1;
        suppose
A132:     n11+2 = L;
          then
A133:     L = n11+1+1;
          then n11 < len Pbg -1 by NAT_1:13;
          then
A134:     len Pag +n11 < (len Pbg -1) + len Pag by XREAL_1:6;
          n11 +1 < L by A133,NAT_1:13;
          then
A135:     n11 < L by NAT_1:13;
          then Pbg.(n11+1) Joins Pbg.n11,Pbg.L,Gb1 by A132,GLIB_001:def 3;
          then Pbg.(n11+1) Joins Pbg.L,Pbg.n11,Gb1;
          then
A136:     Pbg.(n11+1) Joins Pbg.L,Pbg.n11,G by GLIB_000:72;
A137:     1 <= len Pag +n11 by ABIAN:12,NAT_1:12;
          Pbg.(n11+1) = P.(len Pag + n11) by A82,A52,A56,A49,A135,GLIB_001:33;
          then Pbg.(n11+1) in P.edges() by A83,A137,A134,GLIB_001:99;
          hence contradiction by A92,A104,A107,A108,A130,A136;
        end;
        suppose
          n11+2 > len Pbg;
          then n11 >= len Pbg by Th4;
          hence contradiction by A90,A104,A107,A108,A109,A130,XXREAL_0:1;
        end;
      end;
      then Pbg is chordal by A60,A95,A104,A107,A108,A130,Th84;
      then Pb is chordal by A31,Th86;
      hence contradiction by A46,Th88;
    end;
    suppose
A138: Pag.m in xy & Pbg.n11 in xy;
      then
A139: Pbg.n11 = x or Pbg.n11 = y by TARSKI:def 2;
      Pag.m = x or Pag.m = y by A138,TARSKI:def 2;
      then xg,yg are_adjacent by A90,A91,A104,A107,A108,A139,Def3;
      hence contradiction by A4,A11,Th44;
    end;
  end;
  suppose
A140: len Pag <= m;
    then consider m1 being Nat such that
A141: m = len Pag + m1 by NAT_1:10;
    n > len Pag by A93,A140,XXREAL_0:2;
    then
A142: not n in dom Pag by FINSEQ_3:25;
    n in dom P by A89,A98,FINSEQ_3:25;
    then consider n1 being Element of NAT such that
A143: n1 < len Pbg and
A144: n = len Pag + n1 by A142,GLIB_001:34;
A145: P.(len Pag +n1) = Pbg.(n1+1) by A82,A52,A56,A49,A143,GLIB_001:33;
A146: m1 in NAT by ORDINAL1:def 12;
A147: m1 < n1 by A93,A141,A144,XREAL_1:6;
    then m1 < len Pbg by A143,XXREAL_0:2;
    then
A148: P.(len Pag +m1) = Pbg.(m1+1) by A82,A52,A56,A49,A146,GLIB_001:33;
    reconsider n1, m1 as even Element of NAT by A141,A144,ORDINAL1:def 12;
    reconsider m11 = m1+1, n11 = n1+1 as odd Element of NAT;
A149: m11 < n11 by A147,XREAL_1:6;
    n11 <= len Pbg by A143,NAT_1:13;
    then
A150: m11 < len Pbg by A149,XXREAL_0:2;
A151: now
      assume
A152: m11+2 >= n11;
      per cases by A152,XXREAL_0:1;
      suppose
A153:   m11+2 = n11;
        then m11 +1 < len Pbg by A143;
        then m11 < len Pbg -1 by XREAL_1:20;
        then
A154:   len Pag +m11 < (len Pbg -1) + len Pag by XREAL_1:6;
A155:   1 <= len Pag +m11 by ABIAN:12,NAT_1:12;
A156:   Pbg.(m11+1) Joins Pbg.m11,Pbg.n11,G by A150,A153,GLIB_001:def 3;
        Pbg.(m11+1) = P.(len Pag +m11) by A82,A52,A56,A49,A150,GLIB_001:33;
        then Pbg.(m11+1) in P.edges() by A83,A155,A154,GLIB_001:99;
        hence contradiction by A92,A141,A144,A145,A148,A156;
      end;
      suppose
        m11+2 > n11;
        then m11 >= n11 by Th4;
        hence contradiction by A147,XREAL_1:6;
      end;
    end;
    n11 <= len Pbg by A143,NAT_1:13;
    then Pbg is chordal by A60,A91,A141,A144,A145,A148,A151,Th84;
    then Pb is chordal by A31,Th86;
    hence contradiction by A46,Th88;
  end;
end;
