glib_001.miz



    begin

    theorem :: GLIB_001:1

    

     Th1: for x,y be odd Element of NAT holds x < y iff (x + 2) <= y

    proof

      let x,y be odd Element of NAT ;

      hereby

        assume x < y;

        then (x + 1) <= y by NAT_1: 13;

        then (x + 1) < y by XXREAL_0: 1;

        then ((x + 1) + 1) < (y + 1) by XREAL_1: 8;

        hence (x + 2) <= y by NAT_1: 13;

      end;

      assume (x + 2) <= y;

      then ((x + 2) - 2) < (y - 0 ) by XREAL_1: 15;

      hence thesis;

    end;

    ::$Canceled

    theorem :: GLIB_001:3

    

     Th2: for X be set, fs be FinSequence of X, fss be Subset of fs holds ( len ( Seq fss)) <= ( len fs)

    proof

      let X be set, fs be FinSequence of X, fss be Subset of fs;

      

       A1: ( Seq fss) = (fss * ( Sgm ( dom fss))) by FINSEQ_1:def 14;

      ( dom fss) c= ( dom fs) by FINSEQ_6: 151;

      then

       A2: ( dom fss) c= ( Seg ( len fs)) by FINSEQ_1:def 3;

      then ( rng ( Sgm ( dom fss))) = ( dom fss) by FINSEQ_1:def 13;

      

      then ( len ( Seq fss)) = ( len ( Sgm ( dom fss))) by A1, FINSEQ_2: 29

      .= ( card ( dom fss)) by A2, FINSEQ_3: 39

      .= ( card fss) by CARD_1: 62;

      hence thesis by NAT_1: 43;

    end;

    theorem :: GLIB_001:4

    

     Th3: for X be set, fs be FinSequence of X, fss be Subset of fs, m be Element of NAT st m in ( dom ( Seq fss)) holds ex n be Element of NAT st n in ( dom fs) & m <= n & (( Seq fss) . m) = (fs . n)

    proof

      let X be set, fs be FinSequence of X, fss be Subset of fs, m be Element of NAT ;

      set f = ( Sgm ( dom fss)), n = (f . m);

      consider k be Nat such that

       A1: ( dom fss) c= ( Seg k) by FINSEQ_1:def 12;

      assume

       A2: m in ( dom ( Seq fss));

      then

       A3: m in ( dom (fss * f)) by FINSEQ_1:def 14;

      then

       A4: n in ( dom fss) by FUNCT_1: 11;

      ( Seq fss) = (fss * f) by FINSEQ_1:def 14;

      then (( Seq fss) . m) = (fss . n) by A2, FUNCT_1: 12;

      then

       A5: [n, (( Seq fss) . m)] in fss by A4, FUNCT_1:def 2;

      then

       A6: n in ( dom fs) by FUNCT_1: 1;

      

       A7: m in ( dom f) by A3, FUNCT_1: 11;

      

       A8: (( Seq fss) . m) = (fs . n) by A5, FUNCT_1: 1;

      k in NAT by ORDINAL1:def 12;

      hence thesis by A7, A6, A8, A1, FINSEQ_3: 152;

    end;

    theorem :: GLIB_001:5

    

     Th4: for X be set, fs be FinSequence of X, fss be Subset of fs holds ( len ( Seq fss)) = ( card fss)

    proof

      let X be set, fs be FinSequence of X, fss be Subset of fs;

      

       A1: ( Seq fss) = (fss * ( Sgm ( dom fss))) by FINSEQ_1:def 14;

      

       A2: ex k be Nat st ( dom fss) c= ( Seg k) by FINSEQ_1:def 12;

      then ( rng ( Sgm ( dom fss))) = ( dom fss) by FINSEQ_1:def 13;

      then ( dom ( Seq fss)) = ( dom ( Sgm ( dom fss))) by A1, RELAT_1: 27;

      then ( dom ( Seq fss)) = ( Seg ( card ( dom fss))) by A2, FINSEQ_3: 40;

      then ( len ( Seq fss)) = ( card ( dom fss)) by FINSEQ_1:def 3;

      hence thesis by CARD_1: 62;

    end;

    theorem :: GLIB_001:6

    

     Th5: for X be set, fs be FinSequence of X, fss be Subset of fs holds ( dom ( Seq fss)) = ( dom ( Sgm ( dom fss)))

    proof

      let X be set, fs be FinSequence of X, fss be Subset of fs;

      ex k be Nat st ( dom fss) c= ( Seg k) by FINSEQ_1:def 12;

      then

       A1: ( rng ( Sgm ( dom fss))) c= ( dom fss) by FINSEQ_1:def 13;

      ( Seq fss) = (fss * ( Sgm ( dom fss))) by FINSEQ_1:def 14;

      hence thesis by A1, RELAT_1: 27;

    end;

    begin

    definition

      let G be _Graph;

      :: GLIB_001:def1

      mode VertexSeq of G -> FinSequence of ( the_Vertices_of G) means

      : Def1: for n be Element of NAT st 1 <= n & n < ( len it ) holds ex e be set st e Joins ((it . n),(it . (n + 1)),G);

      existence

      proof

        set v = the Element of ( the_Vertices_of G), IT = <*v*>;

        reconsider IT as FinSequence of ( the_Vertices_of G);

        take IT;

        let n be Element of NAT ;

        assume that

         A1: 1 <= n and

         A2: n < ( len IT);

        thus thesis by A1, A2, FINSEQ_1: 40;

      end;

    end

    definition

      let G be _Graph;

      :: GLIB_001:def2

      mode EdgeSeq of G -> FinSequence of ( the_Edges_of G) means

      : Def2: ex vs be FinSequence of ( the_Vertices_of G) st ( len vs) = (( len it ) + 1) & for n be Element of NAT st 1 <= n & n <= ( len it ) holds (it . n) Joins ((vs . n),(vs . (n + 1)),G);

      existence

      proof

        set IT = ( <*> ( the_Edges_of G)), vs = <* the Element of ( the_Vertices_of G)*>;

        reconsider vs as FinSequence of ( the_Vertices_of G);

        take IT, vs;

        thus ( len vs) = (( len IT) + 1) by FINSEQ_1: 40;

        let n be Element of NAT ;

        assume that

         A1: 1 <= n and

         A2: n <= ( len IT);

        thus thesis by A1, A2;

      end;

    end

    definition

      let G be _Graph;

      :: GLIB_001:def3

      mode Walk of G -> FinSequence of (( the_Vertices_of G) \/ ( the_Edges_of G)) means

      : Def3: ( len it ) is odd & (it . 1) in ( the_Vertices_of G) & for n be odd Element of NAT st n < ( len it ) holds (it . (n + 1)) Joins ((it . n),(it . (n + 2)),G);

      existence

      proof

        set VE = (( the_Vertices_of G) \/ ( the_Edges_of G));

        consider v be object such that

         A1: v in ( the_Vertices_of G) by XBOOLE_0:def 1;

        reconsider v as Element of VE by A1, XBOOLE_0:def 3;

        take <*v*>;

        thus ( len <*v*>) is odd by FINSEQ_1: 40, JORDAN12: 2;

        thus ( <*v*> . 1) in ( the_Vertices_of G) by A1, FINSEQ_1: 40;

        let n be odd Element of NAT ;

        assume n < ( len <*v*>);

        then n < 1 by FINSEQ_1: 40;

        hence thesis by ABIAN: 12;

      end;

    end

    registration

      let G be _Graph, W be Walk of G;

      cluster ( len W) -> odd non empty;

      correctness

      proof

        thus ( len W) is odd by Def3;

        hence thesis;

      end;

    end

    definition

      let G be _Graph, v be Vertex of G;

      :: GLIB_001:def4

      func G .walkOf (v) -> Walk of G equals <*v*>;

      coherence

      proof

        set VE = (( the_Vertices_of G) \/ ( the_Edges_of G)), W = <*v*>, v9 = v;

        reconsider v9 as Element of VE by XBOOLE_0:def 3;

         <*v9*> is FinSequence of VE;

        then

        reconsider W as FinSequence of VE;

        now

          thus ( len W) is odd by FINSEQ_1: 40, JORDAN12: 2;

          (W . 1) = v by FINSEQ_1: 40;

          hence (W . 1) in ( the_Vertices_of G);

          let n be odd Element of NAT ;

          

           A1: 1 <= n by ABIAN: 12;

          assume n < ( len <*v*>);

          hence (W . (n + 1)) Joins ((W . n),(W . (n + 2)),G) by A1, FINSEQ_1: 40;

        end;

        hence thesis by Def3;

      end;

    end

    definition

      let G be _Graph, x,y,e be object;

      :: GLIB_001:def5

      func G .walkOf (x,e,y) -> Walk of G equals

      : Def5: <*x, e, y*> if e Joins (x,y,G)

      otherwise (G .walkOf the Element of ( the_Vertices_of G));

      coherence

      proof

        set VE = (( the_Vertices_of G) \/ ( the_Edges_of G));

        hereby

          set W = <*x, e, y*>;

          assume

           A1: e Joins (x,y,G);

          then y is Vertex of G by GLIB_000: 13;

          then

           A2: y is Element of VE by XBOOLE_0:def 3;

          e in ( the_Edges_of G) by A1, GLIB_000:def 13;

          then

           A3: e is Element of VE by XBOOLE_0:def 3;

          x is Vertex of G by A1, GLIB_000: 13;

          then x is Element of VE by XBOOLE_0:def 3;

          then

          reconsider W as FinSequence of VE by A2, A3, FINSEQ_2: 14;

          

           A4: (W . 1) = x by FINSEQ_1: 45;

          

           A5: (W . 2) = e by FINSEQ_1: 45;

          now

            reconsider aa1 = 1 as odd Element of NAT by JORDAN12: 2;

            (aa1 + 2) is odd;

            hence ( len W) is odd by FINSEQ_1: 45;

            thus (W . 1) in ( the_Vertices_of G) by A1, A4, GLIB_000: 13;

            let n be odd Element of NAT ;

            assume n < ( len W);

            then n < (2 + 1) by FINSEQ_1: 45;

            then n <= 2 by NAT_1: 13;

            then n = 0 or ... or n = 2;

            hence (W . (n + 1)) Joins ((W . n),(W . (n + 2)),G) by A1, A4, A5, FINSEQ_1: 45;

          end;

          hence <*x, e, y*> is Walk of G by Def3;

        end;

        thus thesis;

      end;

      consistency ;

    end

    definition

      let G be _Graph, W be Walk of G;

      :: GLIB_001:def6

      func W .first() -> Vertex of G equals (W . 1);

      coherence by Def3;

      :: GLIB_001:def7

      func W .last() -> Vertex of G equals (W . ( len W));

      coherence

      proof

        now

          per cases ;

            suppose ( len W) = 1;

            hence thesis by Def3;

          end;

            suppose

             A1: ( len W) <> 1;

            1 <= ( len W) by ABIAN: 12;

            then 1 < ( len W) by A1, XXREAL_0: 1;

            then (1 + 1) < (( len W) + 1) by XREAL_1: 8;

            then 2 <= ( len W) by NAT_1: 13;

            then

            reconsider n = (( len W) - (2 * 1)) as odd Element of NAT by INT_1: 5;

            

             A2: (n + 2) = ( len W);

            then n < ( len W) by NAT_1: 16;

            then (W . (n + 1)) Joins ((W . n),(W . ( len W)),G) by A2, Def3;

            hence thesis by GLIB_000: 13;

          end;

        end;

        hence thesis;

      end;

    end

    definition

      let G be _Graph, W be Walk of G, n be Nat;

      :: GLIB_001:def8

      func W .vertexAt (n) -> Vertex of G equals

      : Def8: (W . n) if n is odd & n <= ( len W)

      otherwise (W .first() );

      correctness

      proof

        hereby

          reconsider n1 = n as Element of NAT by ORDINAL1:def 12;

          assume that

           A1: n is odd and

           A2: n <= ( len W);

          now

            per cases ;

              suppose n = ( len W);

              then (W . n) = (W .last() );

              hence (W . n) is Vertex of G;

            end;

              suppose n <> ( len W);

              then n < ( len W) by A2, XXREAL_0: 1;

              then (W . (n1 + 1)) Joins ((W . n),(W . (n + 2)),G) by A1, Def3;

              hence (W . n) is Vertex of G by GLIB_000: 13;

            end;

          end;

          hence (W . n) is Vertex of G;

        end;

        thus thesis;

      end;

    end

    definition

      let G be _Graph, W be Walk of G;

      :: GLIB_001:def9

      func W .reverse() -> Walk of G equals ( Rev W);

      coherence

      proof

        set W9 = ( Rev W);

        reconsider W9 as FinSequence of (( the_Vertices_of G) \/ ( the_Edges_of G));

        

         A1: ( len W9) = ( len W) by FINSEQ_5:def 3;

        now

          thus ( len W9) is odd by A1;

          (W9 . 1) = (W .last() ) by FINSEQ_5: 62;

          hence (W9 . 1) in ( the_Vertices_of G);

          let n be odd Element of NAT ;

          set rn = ((( len W) - n) + 1), rnaa1 = ((( len W) - (n + 1)) + 1), rn2 = ((( len W) - (n + 2)) + 1);

          assume

           A2: n < ( len W9);

          then

           A3: (n + 1) <= ( len W) by A1, NAT_1: 13;

          then

          reconsider rnaa1 as even Element of NAT by FINSEQ_5: 1;

          (n + 1) < ( len W) by A3, XXREAL_0: 1;

          then

           A4: ((n + 1) + 1) <= ( len W) by NAT_1: 13;

          then

          reconsider rn2 as odd Element of NAT by FINSEQ_5: 1;

          1 <= (n + 1) by NAT_1: 12;

          then (n + 1) in ( dom W) by A3, FINSEQ_3: 25;

          

          then

           A5: (W9 . (n + 1)) = (W . rnaa1) by FINSEQ_5: 58

          .= (W . (rn2 + 1));

          

           A6: n <= ( len W) by A2, FINSEQ_5:def 3;

          then

          reconsider rn as odd Element of NAT by FINSEQ_5: 1;

          1 <= n by ABIAN: 12;

          then n in ( dom W) by A6, FINSEQ_3: 25;

          

          then

           A7: (W9 . n) = (W . rn) by FINSEQ_5: 58

          .= (W . (rn2 + 2));

          (1 + 0 ) < (n + 2) by XREAL_1: 8;

          then (( len W) - (n + 2)) < (( len W) - 1) by XREAL_1: 15;

          then ((( len W) - (n + 2)) + 1) < ((( len W) - 1) + 1) by XREAL_1: 8;

          then

           A8: (W . (rn2 + 1)) Joins ((W . rn2),(W . (rn2 + 2)),G) by Def3;

          1 <= (n + 2) by NAT_1: 12;

          then (n + 2) in ( dom W) by A4, FINSEQ_3: 25;

          then (W9 . (n + 1)) Joins ((W9 . (n + 2)),(W9 . n),G) by A8, A7, A5, FINSEQ_5: 58;

          hence (W9 . (n + 1)) Joins ((W9 . n),(W9 . (n + 2)),G) by GLIB_000: 14;

        end;

        hence thesis by Def3;

      end;

      involutiveness ;

    end

    definition

      let G be _Graph, W1,W2 be Walk of G;

      :: GLIB_001:def10

      func W1 .append (W2) -> Walk of G equals

      : Def10: (W1 ^' W2) if (W1 .last() ) = (W2 .first() )

      otherwise W1;

      correctness

      proof

        set W = (W1 ^' W2), lenW = ( len W);

        hereby

          assume

           A1: (W1 .last() ) = (W2 .first() );

           A2:

          now

            let n be odd Element of NAT such that

             A3: n < ( len W);

            set v1 = (W . n), v2 = (W . (n + 2)), e = (W . (n + 1));

            now

              per cases ;

                suppose

                 A4: (n + 2) <= ( len W1);

                

                 A5: 1 <= n by ABIAN: 12;

                ((n + 2) - 2) <= (( len W1) - 0 ) by A4, XREAL_1: 13;

                then

                 A6: (W . n) = (W1 . n) by A5, FINSEQ_6: 140;

                ((n + 2) - 1) <= (( len W1) - 0 ) by A4, XREAL_1: 13;

                then

                 A7: (W . (n + 1)) = (W1 . (n + 1)) by FINSEQ_6: 140, NAT_1: 12;

                

                 A8: (W . (n + 2)) = (W1 . (n + 2)) by A4, FINSEQ_6: 140, NAT_1: 12;

                n < ( len W1) by A4, NAT_1: 16, XXREAL_0: 2;

                hence (W . (n + 1)) Joins ((W . n),(W . (n + 2)),G) by A6, A7, A8, Def3;

              end;

                suppose

                 A9: ( len W1) < (n + 2);

                then (( len W1) + 1) <= (n + 2) by NAT_1: 13;

                then (( len W1) + 1) < ((n + 1) + 1) by XXREAL_0: 1;

                then ( len W1) < (n + 1) by XREAL_1: 6;

                then

                 A10: ( len W1) <= n by NAT_1: 13;

                consider k be Nat such that

                 A11: (n + 2) = (( len W1) + k) by A9, NAT_1: 10;

                reconsider k as even Element of NAT by A11, ORDINAL1:def 12;

                k <> 0 by A9, A11;

                then ( 0 + 1) < (k + 1) by XREAL_1: 8;

                then

                 A12: 1 <= k by NAT_1: 13;

                (n + 1) < (( len W) + 1) by A3, XREAL_1: 8;

                then (n + 1) < (( len W1) + ( len W2)) by CARD_1: 27, FINSEQ_6: 139;

                then ((n + 1) + 1) < ((( len W1) + ( len W2)) + 1) by XREAL_1: 8;

                then

                 A13: (k + ( len W1)) < (( len W1) + (( len W2) + 1)) by A11;

                then k < (( len W2) + 1) by XREAL_1: 6;

                then

                 A14: k <= ( len W2) by NAT_1: 13;

                then

                 A15: k < ( len W2) by XXREAL_0: 1;

                then

                 A16: (W . (n + 2)) = (W2 . (k + 1)) by A11, A12, FINSEQ_6: 141;

                now

                  per cases ;

                    suppose

                     A17: n = ( len W1);

                    1 <= n by ABIAN: 12;

                    then

                     A18: (W . n) = (W1 . ( len W1)) by A17, FINSEQ_6: 140;

                    ((1 + 1) + 0 ) < (( len W2) + 1) by A11, A13, A17, XREAL_1: 6;

                    then

                     A19: 1 < ( len W2) by XREAL_1: 6;

                    then (W . (n + 1)) = (W2 . (1 + 1)) by A17, FINSEQ_6: 141;

                    hence (W . (n + 1)) Joins ((W . n),(W . (n + 2)),G) by A1, A11, A16, A17, A18, A19, Def3, JORDAN12: 2;

                  end;

                    suppose

                     A20: ( len W1) <> n;

                    reconsider two = (2 * 1) as even Element of NAT ;

                    

                     A21: ( len W1) < n by A10, A20, XXREAL_0: 1;

                    then

                    reconsider k2 = (k - two) as even Element of NAT by A11, INT_1: 5, XREAL_1: 8;

                    ((2 + ( len W1)) - ( len W1)) < ((k + ( len W1)) - ( len W1)) by A11, A21, XREAL_1: 8;

                    then ((1 + 1) - 1) < (((k2 + 1) + 1) - 1) by XREAL_1: 14;

                    then

                     A22: 1 <= k2 by NAT_1: 13;

                    set kaa1 = (k2 + 1);

                    reconsider kaa1 as odd Element of NAT ;

                    

                     A23: 1 <= (k2 + 1) by NAT_1: 12;

                    ((kaa1 + 1) - 1) < (( len W2) - 0 ) by A14, XREAL_1: 15;

                    

                    then

                     A24: (W2 . (kaa1 + 1)) = (W . (( len W1) + kaa1)) by A23, FINSEQ_6: 141

                    .= (W . (n + 1)) by A11;

                    kaa1 < (kaa1 + 1) by NAT_1: 19;

                    then

                     A25: kaa1 < ( len W2) by A14, XXREAL_0: 2;

                    (kaa1 + 2) = (k + 1);

                    then

                     A26: (W2 . (kaa1 + 2)) = (W . (n + 2)) by A11, A12, A15, FINSEQ_6: 141;

                    k2 < (k2 + (1 + 1)) by NAT_1: 16;

                    then

                     A27: k2 < ( len W2) by A14, XXREAL_0: 2;

                    (n + 2) = ((( len W1) + k2) + 2) by A11;

                    then (W . n) = (W2 . (k2 + 1)) by A22, A27, FINSEQ_6: 141;

                    hence e Joins (v1,v2,G) by A26, A25, A24, Def3;

                  end;

                end;

                hence e Joins (v1,v2,G);

              end;

            end;

            hence e Joins (v1,v2,G);

          end;

           A28:

          now

            assume ( len W) is even;

            then

            reconsider lenW as even Element of NAT ;

            (lenW + 1) = (( len W1) + ( len W2)) by CARD_1: 27, FINSEQ_6: 139;

            hence contradiction;

          end;

          1 <= ( len W1) by ABIAN: 12;

          then (W . 1) = (W1 .first() ) by FINSEQ_6: 140;

          hence (W1 ^' W2) is Walk of G by A28, A2, Def3;

        end;

        thus thesis;

      end;

    end

    definition

      let G be _Graph, W be Walk of G, m,n be Nat;

      :: GLIB_001:def11

      func W .cut (m,n) -> Walk of G equals

      : Def11: ((m,n) -cut W) if m is odd & n is odd & m <= n & n <= ( len W)

      otherwise W;

      correctness

      proof

        hereby

          set W2 = ((m,n) -cut W), VG = ( the_Vertices_of G);

          assume that

           A1: m is odd and

           A2: n is odd and

           A3: m <= n and

           A4: n <= ( len W);

          reconsider m4 = m, n4 = n as odd Nat by A1, A2;

          

           A5: 1 <= m by A1, ABIAN: 12;

          then ((( len W2) + m4) - m4) = ((n4 + 1) - m4) by A3, A4, FINSEQ_6:def 4;

          then

          reconsider lenW2 = ( len W2) as odd Element of NAT ;

          now

            reconsider lenW2aa1 = (lenW2 - 1) as Element of NAT by ABIAN: 12, INT_1: 5;

            lenW2 is odd;

            hence ( len W2) is odd;

             0 < (lenW2aa1 + 1);

            then

             A6: (W2 . ( 0 + 1)) = (W . (m + 0 )) by A3, A4, A5, FINSEQ_6:def 4;

            m <= ( len W) by A3, A4, XXREAL_0: 2;

            then (W . m) = (W .vertexAt m) by A1, Def8;

            hence (W2 . 1) in VG by A6;

            let i be odd Element of NAT ;

            reconsider x = ((m4 + i) - 1) as odd Element of NAT by A5, INT_1: 5, NAT_1: 12;

            reconsider iaa1 = (i - 1) as even Element of NAT by ABIAN: 12, INT_1: 5;

            assume

             A7: i < ( len W2);

            then (i + 1) <= lenW2 by NAT_1: 13;

            then (i + 1) < ( len W2) by XXREAL_0: 1;

            then

             A8: (W2 . ((i + 1) + 1)) = (W . (m + (i + 1))) by A3, A4, A5, FINSEQ_6:def 4;

            (i + m) < (( len W2) + m) by A7, XREAL_1: 8;

            then (i + m) < (n + 1) by A3, A4, A5, FINSEQ_6:def 4;

            then (i + m4) <= n4 by NAT_1: 13;

            then (m4 + i) < n4 by XXREAL_0: 1;

            then (m + i) < ( len W) by A4, XXREAL_0: 2;

            then ((m + i) - 1) < (( len W) - 0 ) by XREAL_1: 14;

            then

             A9: (W . (x + 1)) Joins ((W . x),(W . (x + 2)),G) by Def3;

            iaa1 < (( len W2) - 0 ) by A7, XREAL_1: 14;

            then (W2 . (iaa1 + 1)) = (W . (m + iaa1)) by A3, A4, A5, FINSEQ_6:def 4;

            hence (W2 . (i + 1)) Joins ((W2 . i),(W2 . (i + 2)),G) by A3, A4, A5, A7, A8, A9, FINSEQ_6:def 4;

          end;

          hence ((m,n) -cut W) is Walk of G by Def3;

        end;

        thus thesis;

      end;

    end

    definition

      let G be _Graph, W be Walk of G, m,n be Element of NAT ;

      :: GLIB_001:def12

      func W .remove (m,n) -> Walk of G equals

      : Def12: ((W .cut (1,m)) .append (W .cut (n,( len W)))) if m is odd & n is odd & m <= n & n <= ( len W) & (W . m) = (W . n)

      otherwise W;

      correctness ;

    end

    definition

      let G be _Graph, W be Walk of G, e be object;

      :: GLIB_001:def13

      func W .addEdge (e) -> Walk of G equals (W .append (G .walkOf ((W .last() ),e,((W .last() ) .adj e))));

      coherence ;

    end

    definition

      let G be _Graph, W be Walk of G;

      :: GLIB_001:def14

      func W .vertexSeq() -> VertexSeq of G means

      : Def14: (( len W) + 1) = (2 * ( len it )) & for n be Nat st 1 <= n & n <= ( len it ) holds (it . n) = (W . ((2 * n) - 1));

      existence

      proof

        deffunc F( Nat) = (W . ((2 * $1) - 1));

        reconsider lenW1 = (( len W) + 1) as even Element of NAT ;

        set lenIT = (lenW1 div 2);

        consider IT be FinSequence such that

         A1: ( len IT) = lenIT & for k be Nat st k in ( dom IT) holds (IT . k) = F(k) from FINSEQ_1:sch 2;

        

         A2: 2 divides lenW1 by PEPIN: 22;

        then

         A3: (2 * lenIT) = lenW1 by NAT_D: 3;

        now

          let y be object;

          assume y in ( rng IT);

          then

          consider x be object such that

           A4: x in ( dom IT) and

           A5: y = (IT . x) by FUNCT_1:def 3;

          

           A6: x in ( Seg lenIT) by A1, A4, FINSEQ_1:def 3;

          reconsider x as Element of NAT by A4;

          set 2x = (x * 2);

          reconsider 2x as even Element of NAT ;

          set 2xaa1 = (2x - 1);

          1 <= x by A6, FINSEQ_1: 1;

          then (1 * 2) <= 2x by XREAL_1: 64;

          then

          reconsider 2xaa1 as odd Element of NAT by INT_1: 5, XXREAL_0: 2;

          x <= lenIT by A6, FINSEQ_1: 1;

          then 2x <= (lenIT * 2) by XREAL_1: 64;

          then 2xaa1 <= (lenW1 - 1) by A3, XREAL_1: 9;

          then (W . 2xaa1) = (W .vertexAt 2xaa1) by Def8;

          then (W . 2xaa1) in ( the_Vertices_of G);

          hence y in ( the_Vertices_of G) by A1, A4, A5;

        end;

        then ( rng IT) c= ( the_Vertices_of G) by TARSKI:def 3;

        then

        reconsider IT as FinSequence of ( the_Vertices_of G) by FINSEQ_1:def 4;

        now

          let n be Element of NAT ;

          set v2 = (IT . (n + 1));

          assume that

           A7: 1 <= n and

           A8: n < ( len IT);

          set 2n = (2 * n);

          reconsider 2n as even Element of NAT ;

          

           A9: 1 <= (n + 1) by A7, NAT_1: 13;

          set 2naa1 = (2n - 1);

          (1 * 2) <= (n * 2) by A7, XREAL_1: 64;

          then

          reconsider 2naa1 as odd Element of NAT by INT_1: 5, XXREAL_0: 2;

          2n <= lenW1 by A3, A1, A8, XREAL_1: 68;

          then

           A10: (2n - 1) <= ((( len W) + 1) - 1) by XREAL_1: 9;

          2naa1 <> ( len W) by A3, A1, A8;

          then 2naa1 < ( len W) by A10, XXREAL_0: 1;

          then

           A11: (W . (2naa1 + 1)) Joins ((W . 2naa1),(W . (2naa1 + 2)),G) by Def3;

          (n + 1) <= lenIT by A1, A8, NAT_1: 13;

          then (n + 1) in ( dom IT) by A1, A9, FINSEQ_3: 25;

          

          then

           A12: v2 = (W . ((2 * (n + 1)) - 1)) by A1

          .= (W . (2n + 1));

          n in ( dom IT) by A7, A8, FINSEQ_3: 25;

          then (W . (2naa1 + 1)) Joins ((IT . n),(W . (2naa1 + 2)),G) by A1, A11;

          hence ex e be set st e Joins ((IT . n),(IT . (n + 1)),G) by A12;

        end;

        then

        reconsider IT as VertexSeq of G by Def1;

        take IT;

        thus (( len W) + 1) = (2 * ( len IT)) by A2, A1, NAT_D: 3;

        let n be Nat;

        assume that

         A13: 1 <= n and

         A14: n <= ( len IT);

        n in ( dom IT) by A13, A14, FINSEQ_3: 25;

        hence thesis by A1;

      end;

      uniqueness

      proof

        let IT1,IT2 be VertexSeq of G such that

         A15: (( len W) + 1) = (2 * ( len IT1)) and

         A16: for n be Nat st 1 <= n & n <= ( len IT1) holds (IT1 . n) = (W . ((2 * n) - 1)) and

         A17: (( len W) + 1) = (2 * ( len IT2)) and

         A18: for n be Nat st 1 <= n & n <= ( len IT2) holds (IT2 . n) = (W . ((2 * n) - 1));

         A19:

        now

          let n be Nat such that

           A20: n in ( dom IT1);

          

           A21: n <= ( len IT1) by A20, FINSEQ_3: 25;

          

           A22: 1 <= n by A20, FINSEQ_3: 25;

          then (IT1 . n) = (W . ((2 * n) - 1)) by A16, A21;

          hence (IT1 . n) = (IT2 . n) by A15, A17, A18, A22, A21;

        end;

        ( dom IT1) = ( Seg ( len IT2)) by A15, A17, FINSEQ_1:def 3

        .= ( dom IT2) by FINSEQ_1:def 3;

        hence IT1 = IT2 by A19, FINSEQ_1: 13;

      end;

    end

    definition

      let G be _Graph, W be Walk of G;

      :: GLIB_001:def15

      func W .edgeSeq() -> EdgeSeq of G means

      : Def15: ( len W) = ((2 * ( len it )) + 1) & for n be Nat st 1 <= n & n <= ( len it ) holds (it . n) = (W . (2 * n));

      existence

      proof

        deffunc F( Nat) = (W . (2 * $1));

        reconsider lenWaa1 = (( len W) - 1) as even Element of NAT by ABIAN: 12, INT_1: 5;

        set lenIT = (lenWaa1 div 2);

        reconsider lenIT as Element of NAT ;

        consider IT be FinSequence such that

         A1: ( len IT) = lenIT & for n be Nat st n in ( dom IT) holds (IT . n) = F(n) from FINSEQ_1:sch 2;

        now

          let y be object;

          

           A2: 2 divides lenWaa1 by PEPIN: 22;

          assume y in ( rng IT);

          then

          consider x be object such that

           A3: x in ( dom IT) and

           A4: y = (IT . x) by FUNCT_1:def 3;

          

           A5: x in ( Seg lenIT) by A1, A3, FINSEQ_1:def 3;

          reconsider x as Element of NAT by A3;

          reconsider 2x = (2 * x) as even Element of NAT ;

          x <= lenIT by A5, FINSEQ_1: 1;

          then (x * 2) <= (lenIT * 2) by XREAL_1: 64;

          then 2x <= lenWaa1 by A2, NAT_D: 3;

          then

           A6: (2x + 1) <= (lenWaa1 + 1) by XREAL_1: 7;

          1 <= x by A5, FINSEQ_1: 1;

          then (1 * 2) <= (2 * x) by XREAL_1: 64;

          then

          reconsider 2xaa1 = (2x - 1) as odd Element of NAT by INT_1: 5, XXREAL_0: 2;

          2x <= (2x + 1) by NAT_1: 11;

          then 2x <= ( len W) by A6, XXREAL_0: 2;

          then 2xaa1 < ( len W) by XREAL_1: 147;

          then

           A7: (W . (2xaa1 + 1)) Joins ((W . 2xaa1),(W . (2xaa1 + 2)),G) by Def3;

          y = (W . (2 * x)) by A1, A3, A4;

          hence y in ( the_Edges_of G) by A7, GLIB_000:def 13;

        end;

        then ( rng IT) c= ( the_Edges_of G) by TARSKI:def 3;

        then

        reconsider IT as FinSequence of ( the_Edges_of G) by FINSEQ_1:def 4;

        2 divides lenWaa1 by PEPIN: 22;

        then

         A8: lenWaa1 = (2 * lenIT) by NAT_D: 3;

        then

         A9: ( len W) = ((2 * lenIT) + 1);

        now

          set vs = (W .vertexSeq() );

          take vs;

          

           A10: (((2 * ( len IT)) + 1) + 1) = (2 * ( len vs)) by A8, A1, Def14;

          then

           A11: (2 * (( len IT) + 1)) = (2 * ( len vs));

          thus ( len vs) = (( len IT) + 1) by A10;

          let n be Element of NAT ;

          set v1 = (vs . n), v2 = (vs . (n + 1));

          assume that

           A12: 1 <= n and

           A13: n <= ( len IT);

          set 2n = (2 * n);

          reconsider 2n as even Element of NAT ;

          set 2naa1 = (2n - 1);

          1 <= (n + n) by A12, NAT_1: 12;

          then

          reconsider 2naa1 as odd Element of NAT by INT_1: 5;

          

           A14: 1 <= (n + 1) by NAT_1: 12;

          (n * 2) <= (( len IT) * 2) by A13, XREAL_1: 64;

          then (n * 2) <= ( len W) by A9, A1, NAT_1: 12;

          then

           A15: 2naa1 < (( len W) - 0 ) by XREAL_1: 15;

          (n + 1) <= ( len vs) by A11, A13, XREAL_1: 7;

          then v2 = (W . ((2 * (n + 1)) - 1)) by A14, Def14;

          then

           A16: v2 = (W . (2naa1 + 2));

          n in ( dom IT) by A12, A13, FINSEQ_3: 25;

          then

           A17: (IT . n) = (W . (2naa1 + 1)) by A1;

          n <= ( len vs) by A11, A13, NAT_1: 12;

          then v1 = (W . ((2 * n) - 1)) by A12, Def14;

          hence (IT . n) Joins ((vs . n),(vs . (n + 1)),G) by A17, A16, A15, Def3;

        end;

        then

        reconsider IT as EdgeSeq of G by Def2;

        take IT;

        thus ( len W) = ((2 * ( len IT)) + 1) by A8, A1;

        let n be Nat;

        assume that

         A18: 1 <= n and

         A19: n <= ( len IT);

        n in ( dom IT) by A18, A19, FINSEQ_3: 25;

        hence thesis by A1;

      end;

      uniqueness

      proof

        let IT1,IT2 be EdgeSeq of G such that

         A20: ( len W) = ((2 * ( len IT1)) + 1) and

         A21: for n be Nat st 1 <= n & n <= ( len IT1) holds (IT1 . n) = (W . (2 * n)) and

         A22: ( len W) = ((2 * ( len IT2)) + 1) and

         A23: for n be Nat st 1 <= n & n <= ( len IT2) holds (IT2 . n) = (W . (2 * n));

         A24:

        now

          let n be Nat;

          assume

           A25: n in ( dom IT1);

          then

           A26: 1 <= n by FINSEQ_3: 25;

          

           A27: n <= ( len IT2) by A20, A22, A25, FINSEQ_3: 25;

          n <= ( len IT1) by A25, FINSEQ_3: 25;

          

          hence (IT1 . n) = (W . (2 * n)) by A21, A26

          .= (IT2 . n) by A23, A26, A27;

        end;

        ( dom IT1) = ( Seg ( len IT2)) by A20, A22, FINSEQ_1:def 3

        .= ( dom IT2) by FINSEQ_1:def 3;

        hence IT1 = IT2 by A24, FINSEQ_1: 13;

      end;

    end

    definition

      let G be _Graph, W be Walk of G;

      :: GLIB_001:def16

      func W .vertices() -> finite Subset of ( the_Vertices_of G) equals ( rng (W .vertexSeq() ));

      coherence ;

    end

    definition

      let G be _Graph, W be Walk of G;

      :: GLIB_001:def17

      func W .edges() -> finite Subset of ( the_Edges_of G) equals ( rng (W .edgeSeq() ));

      coherence ;

    end

    definition

      let G be _Graph, W be Walk of G;

      :: GLIB_001:def18

      func W .length() -> Element of NAT equals ( len (W .edgeSeq() ));

      coherence ;

    end

    definition

      let G be _Graph, W be Walk of G, v be set;

      :: GLIB_001:def19

      func W .find (v) -> odd Element of NAT means

      : Def19: it <= ( len W) & (W . it ) = v & for n be odd Nat st n <= ( len W) & (W . n) = v holds it <= n if v in (W .vertices() )

      otherwise it = ( len W);

      existence

      proof

        hereby

          defpred P[ Nat] means $1 is odd & $1 <= ( len W) & (W . $1) = v;

          set vs = (W .vertexSeq() );

          assume

           A1: v in (W .vertices() );

          now

            consider i be Nat such that

             A2: i in ( dom vs) and

             A3: (vs . i) = v by A1, FINSEQ_2: 10;

            set n1 = (2 * i);

            reconsider n1 as even Nat;

            set n = (n1 - 1);

            

             A4: 1 <= i by A2, FINSEQ_3: 25;

            then 1 <= (i + i) by NAT_1: 12;

            then

            reconsider n as odd Element of NAT by INT_1: 5;

            take n;

            

             A5: i <= ( len vs) by A2, FINSEQ_3: 25;

            then (i * 2) <= (( len vs) * 2) by XREAL_1: 64;

            then (i * 2) <= (( len W) + 1) by Def14;

            then (n1 - 1) <= ((( len W) + 1) - 1) by XREAL_1: 13;

            hence n <= ( len W);

            thus (W . n) = v by A3, A4, A5, Def14;

          end;

          then

           A6: ex k be Nat st P[k];

          consider IT be Nat such that

           A7: P[IT] & for n be Nat st P[n] holds IT <= n from NAT_1:sch 5( A6);

          reconsider IT as odd Element of NAT by A7, ORDINAL1:def 12;

          take IT;

          thus IT <= ( len W) & (W . IT) = v by A7;

          let n be odd Nat;

          assume that

           A8: n <= ( len W) and

           A9: (W . n) = v;

          thus IT <= n by A7, A8, A9;

        end;

        set IT = ( len W);

        assume not v in (W .vertices() );

        take IT;

        thus thesis;

      end;

      uniqueness

      proof

        let IT1,IT2 be odd Element of NAT ;

        hereby

          assume v in (W .vertices() );

          assume that

           A10: IT1 <= ( len W) and

           A11: (W . IT1) = v and

           A12: for n be odd Nat st n <= ( len W) & (W . n) = v holds IT1 <= n;

          assume that

           A13: IT2 <= ( len W) and

           A14: (W . IT2) = v and

           A15: for n be odd Nat st n <= ( len W) & (W . n) = v holds IT2 <= n;

          

           A16: IT2 <= IT1 by A10, A11, A15;

          IT1 <= IT2 by A12, A13, A14;

          hence IT1 = IT2 by A16, XXREAL_0: 1;

        end;

        assume not v in (W .vertices() );

        thus thesis;

      end;

      consistency ;

    end

    definition

      let G be _Graph, W be Walk of G, n be Element of NAT ;

      :: GLIB_001:def20

      func W .find (n) -> odd Element of NAT means

      : Def20: it <= ( len W) & (W . it ) = (W . n) & for k be odd Nat st k <= ( len W) & (W . k) = (W . n) holds it <= k if n is odd & n <= ( len W)

      otherwise it = ( len W);

      existence

      proof

        defpred P[ Nat] means $1 is odd & $1 <= ( len W) & (W . $1) = (W . n);

        hereby

          assume that

           A1: n is odd and

           A2: n <= ( len W);

          

           A3: ex n be Nat st P[n] by A1, A2;

          consider IT be Nat such that

           A4: P[IT] & for k be Nat st P[k] holds IT <= k from NAT_1:sch 5( A3);

          reconsider IT as odd Element of NAT by A4, ORDINAL1:def 12;

          take IT;

          thus IT <= ( len W) & (W . IT) = (W . n) by A4;

          let k be odd Nat;

          thus k <= ( len W) & (W . k) = (W . n) implies IT <= k by A4;

        end;

        thus thesis;

      end;

      uniqueness

      proof

        let IT1,IT2 be odd Element of NAT ;

        hereby

          assume that n is odd and n <= ( len W);

          assume that

           A5: IT1 <= ( len W) and

           A6: (W . IT1) = (W . n) and

           A7: for k be odd Nat st k <= ( len W) & (W . k) = (W . n) holds IT1 <= k;

          assume that

           A8: IT2 <= ( len W) and

           A9: (W . IT2) = (W . n) and

           A10: for k be odd Nat st k <= ( len W) & (W . k) = (W . n) holds IT2 <= k;

          

           A11: IT2 <= IT1 by A5, A6, A10;

          IT1 <= IT2 by A7, A8, A9;

          hence IT1 = IT2 by A11, XXREAL_0: 1;

        end;

        thus thesis;

      end;

      consistency ;

    end

    definition

      let G be _Graph, W be Walk of G, v be set;

      :: GLIB_001:def21

      func W .rfind (v) -> odd Element of NAT means

      : Def21: it <= ( len W) & (W . it ) = v & for n be odd Element of NAT st n <= ( len W) & (W . n) = v holds n <= it if v in (W .vertices() )

      otherwise it = ( len W);

      existence

      proof

        hereby

          defpred P[ Nat] means $1 is odd & $1 <= ( len W) & (W . $1) = v;

          assume

           A1: v in (W .vertices() );

          then

           A2: (W . (W .find v)) = v by Def19;

          (W .find v) <= ( len W) by A1, Def19;

          then

           A3: ex k be Nat st P[k] by A2;

          

           A4: for k be Nat st P[k] holds k <= ( len W);

          consider IT be Nat such that

           A5: P[IT] & for n be Nat st P[n] holds n <= IT from NAT_1:sch 6( A4, A3);

          reconsider IT as odd Element of NAT by A5, ORDINAL1:def 12;

          take IT;

          thus IT <= ( len W) & (W . IT) = v by A5;

          let n be odd Element of NAT ;

          assume that

           A6: n <= ( len W) and

           A7: (W . n) = v;

          thus n <= IT by A5, A6, A7;

        end;

        thus thesis;

      end;

      uniqueness

      proof

        let IT1,IT2 be odd Element of NAT ;

        hereby

          assume v in (W .vertices() );

          assume that

           A8: IT1 <= ( len W) and

           A9: (W . IT1) = v and

           A10: for n be odd Element of NAT st n <= ( len W) & (W . n) = v holds n <= IT1;

          assume that

           A11: IT2 <= ( len W) and

           A12: (W . IT2) = v and

           A13: for n be odd Element of NAT st n <= ( len W) & (W . n) = v holds n <= IT2;

          

           A14: IT1 <= IT2 by A8, A9, A13;

          IT2 <= IT1 by A10, A11, A12;

          hence IT1 = IT2 by A14, XXREAL_0: 1;

        end;

        thus thesis;

      end;

      consistency ;

    end

    definition

      let G be _Graph, W be Walk of G, n be Element of NAT ;

      :: GLIB_001:def22

      func W .rfind (n) -> odd Element of NAT means

      : Def22: it <= ( len W) & (W . it ) = (W . n) & for k be odd Element of NAT st k <= ( len W) & (W . k) = (W . n) holds k <= it if n is odd & n <= ( len W)

      otherwise it = ( len W);

      existence

      proof

        defpred P[ Nat] means $1 is odd & $1 <= ( len W) & (W . $1) = (W . n);

        hereby

          

           A1: for k be Nat st P[k] holds k <= ( len W);

          assume that

           A2: n is odd and

           A3: n <= ( len W);

          

           A4: ex k be Nat st P[k] by A2, A3;

          consider IT be Nat such that

           A5: P[IT] & for k be Nat st P[k] holds k <= IT from NAT_1:sch 6( A1, A4);

          reconsider IT as odd Element of NAT by A5, ORDINAL1:def 12;

          take IT;

          thus IT <= ( len W) & (W . IT) = (W . n) by A5;

          thus for k be odd Element of NAT st k <= ( len W) & (W . k) = (W . n) holds k <= IT by A5;

        end;

        thus thesis;

      end;

      uniqueness

      proof

        let IT1,IT2 be odd Element of NAT ;

        hereby

          assume that n is odd and n <= ( len W);

          assume that

           A6: IT1 <= ( len W) and

           A7: (W . IT1) = (W . n) and

           A8: for k be odd Element of NAT st k <= ( len W) & (W . k) = (W . n) holds k <= IT1;

          assume that

           A9: IT2 <= ( len W) and

           A10: (W . IT2) = (W . n) and

           A11: for k be odd Element of NAT st k <= ( len W) & (W . k) = (W . n) holds k <= IT2;

          

           A12: IT2 <= IT1 by A8, A9, A10;

          IT1 <= IT2 by A6, A7, A11;

          hence IT1 = IT2 by A12, XXREAL_0: 1;

        end;

        thus thesis;

      end;

      consistency ;

    end

    definition

      let G be _Graph, u,v be object, W be Walk of G;

      :: GLIB_001:def23

      pred W is_Walk_from u,v means (W .first() ) = u & (W .last() ) = v;

    end

    definition

      let G be _Graph, W be Walk of G;

      :: GLIB_001:def24

      attr W is closed means

      : Def24: (W .first() ) = (W .last() );

      :: GLIB_001:def25

      attr W is directed means

      : Def25: for n be odd Element of NAT st n < ( len W) holds (( the_Source_of G) . (W . (n + 1))) = (W . n);

      :: original: trivial

      redefine

      :: GLIB_001:def26

      attr W is trivial means (W .length() ) = 0 ;

      compatibility

      proof

        W is trivial iff (W .length() ) = 0

        proof

          hereby

            assume

             A1: W is trivial;

            W <> {}

            proof

              assume W = {} ;

              then ( len W) = 0 ;

              hence thesis;

            end;

            then

            consider x be object such that

             A5: W = <*x*> by A1, JORDAN1G: 1;

            set WW = (W .edgeSeq() );

            ( len W) = 1 by A5, FINSEQ_1: 39;

            then ((2 * ( len WW)) + 1) = ( 0 + 1) by Def15;

            hence (W .length() ) = 0 ;

          end;

          assume (W .length() ) = 0 ;

          then ( len W) = ((2 * 0 ) + 1) by Def15;

          hence thesis by NAT_D: 60;

        end;

        hence thesis;

      end;

      :: GLIB_001:def27

      attr W is Trail-like means

      : Def27: (W .edgeSeq() ) is one-to-one;

    end

    notation

      let G be _Graph, W be Walk of G;

      antonym W is open for W is closed;

    end

    definition

      let G be _Graph, W be Walk of G;

      :: GLIB_001:def28

      attr W is Path-like means

      : Def28: W is Trail-like & for m,n be odd Element of NAT st m < n & n <= ( len W) holds (W . m) = (W . n) implies m = 1 & n = ( len W);

    end

    definition

      let G be _Graph, W be Walk of G;

      :: GLIB_001:def29

      attr W is vertex-distinct means

      : Def29: for m,n be odd Element of NAT st m <= ( len W) & n <= ( len W) & (W . m) = (W . n) holds m = n;

    end

    definition

      let G be _Graph, W be Walk of G;

      :: GLIB_001:def30

      attr W is Circuit-like means W is closed & W is Trail-like & W is non trivial;

      :: GLIB_001:def31

      attr W is Cycle-like means W is closed & W is Path-like & W is non trivial;

    end

    

     Lm1: for G be _Graph, W be Walk of G, n be odd Element of NAT st n <= ( len W) holds (W . n) in ( the_Vertices_of G)

    proof

      let G be _Graph, W be Walk of G, n be odd Element of NAT ;

      assume n <= ( len W);

      then (W . n) = (W .vertexAt n) by Def8;

      hence thesis;

    end;

    

     Lm2: for G be _Graph, W be Walk of G, n be even Element of NAT st n in ( dom W) holds ex naa1 be odd Element of NAT st naa1 = (n - 1) & (n - 1) in ( dom W) & (n + 1) in ( dom W) & (W . n) Joins ((W . naa1),(W . (n + 1)),G)

    proof

      let G be _Graph, W be Walk of G, n be even Element of NAT ;

      

       A1: 1 <= (1 + n) by NAT_1: 12;

      assume

       A2: n in ( dom W);

      then

       A3: n <= ( len W) by FINSEQ_3: 25;

      

       A4: 1 <= n by A2, FINSEQ_3: 25;

      then

      reconsider naa1 = (n - 1) as odd Element of NAT by INT_1: 5;

      take naa1;

      thus naa1 = (n - 1);

      1 < n by A4, JORDAN12: 2, XXREAL_0: 1;

      then (1 + 1) <= n by NAT_1: 13;

      then ((1 + 1) - 1) <= (n - 1) by XREAL_1: 13;

      then

       A5: 1 <= naa1;

      (n - 1) <= (( len W) - 0 ) by A3, XREAL_1: 13;

      hence (n - 1) in ( dom W) by A5, FINSEQ_3: 25;

      n < ( len W) by A3, XXREAL_0: 1;

      then (n + 1) <= ( len W) by NAT_1: 13;

      hence (n + 1) in ( dom W) by A1, FINSEQ_3: 25;

      (n - 1) < (( len W) - 0 ) by A3, XREAL_1: 15;

      then (W . (naa1 + 1)) Joins ((W . naa1),(W . (naa1 + 2)),G) by Def3;

      hence thesis;

    end;

    

     Lm3: for G be _Graph, W be Walk of G, n be odd Element of NAT st n < ( len W) holds n in ( dom W) & (n + 1) in ( dom W) & (n + 2) in ( dom W)

    proof

      let G be _Graph, W be Walk of G, n be odd Element of NAT ;

      

       A1: 1 <= n by ABIAN: 12;

      

       A2: 1 <= (n + 1) by NAT_1: 12;

      

       A3: 1 <= (n + 2) by NAT_1: 12;

      assume

       A4: n < ( len W);

      then

       A5: (n + 1) <= ( len W) by NAT_1: 13;

      (n + 2) <= ( len W) by A4, Th1;

      hence thesis by A4, A1, A2, A3, A5, FINSEQ_3: 25;

    end;

    

     Lm4: for G be _Graph, v be Vertex of G holds (G .walkOf v) is closed & (G .walkOf v) is directed & (G .walkOf v) is trivial & (G .walkOf v) is Trail-like & (G .walkOf v) is Path-like

    proof

      let G be _Graph, v be Vertex of G;

      set W = (G .walkOf v);

      (W .first() ) = (W .last() ) by FINSEQ_1: 40;

      hence W is closed;

      now

        let n be odd Element of NAT ;

        assume n < ( len W);

        then n < 1 by FINSEQ_1: 39;

        hence (W . n) = (( the_Source_of G) . (W . (n + 1))) by ABIAN: 12;

      end;

      hence W is directed;

      thus W is trivial;

      ( len W) = ((2 * ( len (W .edgeSeq() ))) + 1) by Def15;

      then ( 0 + 1) = ((2 * ( len (W .edgeSeq() ))) + 1) by FINSEQ_1: 40;

      then (W .edgeSeq() ) = {} ;

      hence

       A1: W is Trail-like;

      now

        let n,m be odd Element of NAT ;

        assume that

         A2: n < m and

         A3: m <= ( len W);

        m <= 1 by A3, FINSEQ_1: 40;

        then n < 1 by A2, XXREAL_0: 2;

        hence (W . n) = (W . m) implies n = 1 & m = ( len W) by ABIAN: 12;

      end;

      hence thesis by A1;

    end;

    

     Lm5: for G be _Graph, x,e,y be object holds e Joins (x,y,G) implies ( len (G .walkOf (x,e,y))) = 3

    proof

      let G be _Graph, x,e,y be object;

      assume e Joins (x,y,G);

      then (G .walkOf (x,e,y)) = <*x, e, y*> by Def5;

      hence thesis by FINSEQ_1: 45;

    end;

    

     Lm6: for G be _Graph, x,e,y be object holds e Joins (x,y,G) implies ((G .walkOf (x,e,y)) .first() ) = x & ((G .walkOf (x,e,y)) .last() ) = y & (G .walkOf (x,e,y)) is_Walk_from (x,y)

    proof

      let G be _Graph, x,e,y be object;

      set W = (G .walkOf (x,e,y));

      assume e Joins (x,y,G);

      then

       A1: W = <*x, e, y*> by Def5;

      hence

       A2: (W .first() ) = x by FINSEQ_1: 45;

      ( len W) = 3 by A1, FINSEQ_1: 45;

      hence (W .last() ) = y by A1, FINSEQ_1: 45;

      hence thesis by A2;

    end;

    

     Lm7: for G be _Graph, W be Walk of G holds (W .first() ) = ((W .reverse() ) .last() ) & (W .last() ) = ((W .reverse() ) .first() )

    proof

      let G be _Graph, W be Walk of G;

      ( len W) = ( len (W .reverse() )) by FINSEQ_5:def 3;

      hence (W .first() ) = ((W .reverse() ) .last() ) by FINSEQ_5: 62;

      thus thesis by FINSEQ_5: 62;

    end;

    

     Lm8: for G be _Graph, W be Walk of G, n be Element of NAT holds n in ( dom (W .reverse() )) implies ((W .reverse() ) . n) = (W . ((( len W) - n) + 1)) & ((( len W) - n) + 1) in ( dom W)

    proof

      let G be _Graph, W be Walk of G, n be Element of NAT ;

      assume

       A1: n in ( dom (W .reverse() ));

      hence ((W .reverse() ) . n) = (W . ((( len W) - n) + 1)) by FINSEQ_5:def 3;

      n in ( Seg ( len (W .reverse() ))) by A1, FINSEQ_1:def 3;

      then n in ( Seg ( len W)) by FINSEQ_5:def 3;

      then ((( len W) - n) + 1) in ( Seg ( len W)) by FINSEQ_5: 2;

      hence thesis by FINSEQ_1:def 3;

    end;

    

     Lm9: for G be _Graph, W1,W2 be Walk of G holds (W1 .last() ) = (W2 .first() ) implies (( len (W1 .append W2)) + 1) = (( len W1) + ( len W2))

    proof

      let G be _Graph, W1,W2 be Walk of G;

      set W = (W1 .append W2);

      assume (W1 .last() ) = (W2 .first() );

      then W = (W1 ^' W2) by Def10;

      hence thesis by CARD_1: 27, FINSEQ_6: 139;

    end;

    

     Lm10: for G be _Graph, W1,W2 be Walk of G holds (W1 .last() ) = (W2 .first() ) implies ( len W1) <= ( len (W1 .append W2)) & ( len W2) <= ( len (W1 .append W2))

    proof

      let G be _Graph, W1,W2 be Walk of G;

      set W = (W1 .append W2);

      assume (W1 .last() ) = (W2 .first() );

      then

       A1: (( len W) + 1) = (( len W1) + ( len W2)) by Lm9;

      1 <= ( len W2) by ABIAN: 12;

      then ((( len W1) + ( len W2)) - ( len W2)) <= ((( len W) + 1) - 1) by A1, XREAL_1: 13;

      hence ( len W1) <= ( len W);

      1 <= ( len W1) by ABIAN: 12;

      then ((( len W2) + ( len W1)) - ( len W1)) <= ((( len W) + 1) - 1) by A1, XREAL_1: 13;

      hence thesis;

    end;

    

     Lm11: for G be _Graph, W1,W2 be Walk of G holds (W1 .last() ) = (W2 .first() ) implies ((W1 .append W2) .first() ) = (W1 .first() ) & ((W1 .append W2) .last() ) = (W2 .last() ) & (W1 .append W2) is_Walk_from ((W1 .first() ),(W2 .last() ))

    proof

      let G be _Graph, W1,W2 be Walk of G;

      set W = (W1 .append W2);

      assume

       A1: (W1 .last() ) = (W2 .first() );

      then

       A2: W = (W1 ^' W2) by Def10;

      1 <= ( len W1) by ABIAN: 12;

      hence

       A3: (W .first() ) = (W1 .first() ) by A2, FINSEQ_6: 140;

      now

        per cases ;

          suppose

           A4: ( len W2) <> 1;

          1 <= ( len W2) by ABIAN: 12;

          then 1 < ( len W2) by A4, XXREAL_0: 1;

          hence (W .last() ) = (W2 .last() ) by A2, FINSEQ_6: 142;

        end;

          suppose

           A5: ( len W2) = 1;

          

           A6: ((2,1) -cut W2) = {} by FINSEQ_6:def 4;

          W = (W1 ^ ((2,1) -cut W2)) by A2, A5, FINSEQ_6:def 5;

          hence (W .last() ) = (W2 .last() ) by A1, A5, A6, FINSEQ_1: 34;

        end;

      end;

      hence thesis by A3;

    end;

    

     Lm12: for G be _Graph, W1,W2 be Walk of G, n be Element of NAT holds n in ( dom W1) implies ((W1 .append W2) . n) = (W1 . n) & n in ( dom (W1 .append W2))

    proof

      let G be _Graph, W1,W2 be Walk of G, n be Element of NAT ;

      set W = (W1 .append W2);

      assume

       A1: n in ( dom W1);

      then

       A2: n <= ( len W1) by FINSEQ_3: 25;

      

       A3: 1 <= n by A1, FINSEQ_3: 25;

      now

        per cases ;

          suppose

           A4: (W1 .last() ) = (W2 .first() );

          then W = (W1 ^' W2) by Def10;

          hence (W . n) = (W1 . n) by A3, A2, FINSEQ_6: 140;

          reconsider lenW2aa1 = (( len W2) - 1) as Element of NAT by ABIAN: 12, INT_1: 5;

          n <= (( len W1) + lenW2aa1) by A2, NAT_1: 12;

          then n <= ((( len W1) + ( len W2)) + ( - 1));

          then n <= ((( len W) + 1) + ( - 1)) by A4, Lm9;

          hence n in ( dom W) by A3, FINSEQ_3: 25;

        end;

          suppose (W1 .last() ) <> (W2 .first() );

          hence thesis by A1, Def10;

        end;

      end;

      hence thesis;

    end;

    

     Lm13: for G be _Graph, W1,W2 be Walk of G holds (W1 .last() ) = (W2 .first() ) implies for n be Element of NAT st n < ( len W2) holds ((W1 .append W2) . (( len W1) + n)) = (W2 . (n + 1)) & (( len W1) + n) in ( dom (W1 .append W2))

    proof

      let G be _Graph, W1,W2 be Walk of G;

      set W = (W1 .append W2);

      assume

       A1: (W1 .last() ) = (W2 .first() );

      let n be Element of NAT ;

      assume

       A2: n < ( len W2);

      then (n + 1) <= ( len W2) by NAT_1: 13;

      then ((n + 1) + ( len W1)) <= (( len W2) + ( len W1)) by XREAL_1: 7;

      then ((( len W1) + n) + 1) <= (( len W) + 1) by A1, Lm9;

      then

       A3: (( len W1) + n) <= ( len W) by XREAL_1: 6;

      

       A4: W = (W1 ^' W2) by A1, Def10;

      now

        per cases ;

          suppose

           A5: n = 0 ;

          then 1 <= (( len W1) + n) by ABIAN: 12;

          then (( len W1) + n) in ( dom W1) by A5, FINSEQ_3: 25;

          hence ((W1 .append W2) . (( len W1) + n)) = (W2 . (n + 1)) by A1, A5, Lm12;

        end;

          suppose n <> 0 ;

          then ( 0 + 1) < (n + 1) by XREAL_1: 8;

          then 1 <= n by NAT_1: 13;

          hence ((W1 .append W2) . (( len W1) + n)) = (W2 . (n + 1)) by A4, A2, FINSEQ_6: 141;

        end;

      end;

      hence ((W1 .append W2) . (( len W1) + n)) = (W2 . (n + 1));

      1 <= (( len W1) + n) by ABIAN: 12, NAT_1: 12;

      hence thesis by A3, FINSEQ_3: 25;

    end;

    

     Lm14: for G be _Graph, W1,W2 be Walk of G, n be Element of NAT holds n in ( dom (W1 .append W2)) implies n in ( dom W1) or ex k be Element of NAT st k < ( len W2) & n = (( len W1) + k)

    proof

      let G be _Graph, W1,W2 be Walk of G, n be Element of NAT ;

      set W3 = (W1 .append W2);

      assume

       A1: n in ( dom W3);

      then

       A2: n <= ( len W3) by FINSEQ_3: 25;

      

       A3: 1 <= n by A1, FINSEQ_3: 25;

      now

        per cases ;

          suppose (W1 .last() ) = (W2 .first() );

          then

           A4: (( len W3) + 1) = (( len W1) + ( len W2)) by Lm9;

          now

            assume not n in ( dom W1);

            then ( len W1) < n by A3, FINSEQ_3: 25;

            then

            reconsider k = (n - ( len W1)) as Element of NAT by INT_1: 5;

            take k;

            now

              assume ( len W2) <= k;

              then (( len W1) + ( len W2)) <= (( len W1) + k) by XREAL_1: 7;

              hence contradiction by A2, A4, NAT_1: 13;

            end;

            hence k < ( len W2);

            thus n = (( len W1) + k);

          end;

          hence thesis;

        end;

          suppose (W1 .last() ) <> (W2 .first() );

          hence thesis by A1, Def10;

        end;

      end;

      hence thesis;

    end;

    

     Lm15: for G be _Graph, W be Walk of G, m,n be odd Element of NAT st m <= n & n <= ( len W) holds (( len (W .cut (m,n))) + m) = (n + 1) & for i be Element of NAT st i < ( len (W .cut (m,n))) holds ((W .cut (m,n)) . (i + 1)) = (W . (m + i)) & (m + i) in ( dom W)

    proof

      let G be _Graph, W be Walk of G, m,n be odd Element of NAT ;

      set W2 = (W .cut (m,n));

      assume that

       A1: m <= n and

       A2: n <= ( len W);

      

       A3: 1 <= m by ABIAN: 12;

      

       A4: W2 = ((m,n) -cut W) by A1, A2, Def11;

      hence

       A5: (( len (W .cut (m,n))) + m) = (n + 1) by A1, A2, A3, FINSEQ_6:def 4;

      let i be Element of NAT ;

      assume

       A6: i < ( len (W .cut (m,n)));

      hence ((W .cut (m,n)) . (i + 1)) = (W . (m + i)) by A1, A2, A4, A3, FINSEQ_6:def 4;

      (m + i) < (n + 1) by A5, A6, XREAL_1: 8;

      then (m + i) <= n by NAT_1: 13;

      then

       A7: (m + i) <= ( len W) by A2, XXREAL_0: 2;

      1 <= (m + i) by ABIAN: 12, NAT_1: 12;

      hence thesis by A7, FINSEQ_3: 25;

    end;

    

     Lm16: for G be _Graph, W be Walk of G, m,n be odd Element of NAT st m <= n & n <= ( len W) holds ((W .cut (m,n)) .first() ) = (W . m) & ((W .cut (m,n)) .last() ) = (W . n) & (W .cut (m,n)) is_Walk_from ((W . m),(W . n))

    proof

      let G be _Graph, W be Walk of G, m,n be odd Element of NAT ;

      set W2 = (W .cut (m,n));

      assume that

       A1: m <= n and

       A2: n <= ( len W);

      (1 - 1) < (( len W2) - 0 );

      then (W2 . ( 0 + 1)) = (W . (m + 0 )) by A1, A2, Lm15;

      hence

       A3: (W2 .first() ) = (W . m);

      reconsider nm4 = (n - m) as Element of NAT by A1, INT_1: 5;

      

       A4: ((( len W2) + m) - m) = ((n + 1) - m) by A1, A2, Lm15;

      then (((n - m) + 1) - 1) < (( len W2) - 0 ) by XREAL_1: 15;

      then nm4 < ( len W2);

      then (W2 . ((n - m) + 1)) = (W . (m + (n - m))) by A1, A2, Lm15;

      hence (W2 .last() ) = (W . n) by A4;

      hence thesis by A3;

    end;

    

     Lm17: for G be _Graph, W be Walk of G, m,n,o be odd Element of NAT st m <= n & n <= o & o <= ( len W) holds ((W .cut (m,n)) .append (W .cut (n,o))) = (W .cut (m,o))

    proof

      let G be _Graph, W be Walk of G, m,n,o be odd Element of NAT ;

      assume that

       A1: m <= n and

       A2: n <= o and

       A3: o <= ( len W);

      set W1 = (W .cut (m,n)), W2 = (W .cut (n,o)), W3 = (W .cut (m,o)), W4 = (W1 .append W2);

      

       A4: n <= ( len W) by A2, A3, XXREAL_0: 2;

      

       A5: m <= o by A1, A2, XXREAL_0: 2;

      now

        

         A6: (( len W3) + m) = (o + 1) by A3, A5, Lm15;

        

         A7: (W1 .last() ) = (W . n) by A1, A4, Lm16

        .= (W2 .first() ) by A2, A3, Lm16;

        

         A8: (( len W1) + m) = (n + 1) by A1, A4, Lm15;

        

         A9: (( len W2) + n) = (o + 1) by A2, A3, Lm15;

        then ((( len W1) + ( len W2)) + m) = ((1 + ( len W3)) + m) by A8, A6;

        then

         A10: (( len W4) + 1) = (( len W3) + 1) by A7, Lm9;

        hence ( len W4) = ( len W4) & ( len W3) = ( len W4);

        let x be Nat;

        assume

         A11: x in ( dom W4);

        then

         A12: 1 <= x by FINSEQ_3: 25;

        then

        reconsider xaa1 = (x - 1) as Element of NAT by INT_1: 5;

        

         A13: x <= ( len W4) by A11, FINSEQ_3: 25;

        then xaa1 < (( len W4) - 0 ) by XREAL_1: 15;

        then

         A14: (W3 . (xaa1 + 1)) = (W . (m + xaa1)) by A3, A5, A10, Lm15;

        now

          per cases ;

            suppose

             A15: x <= ( len W1);

            then

             A16: xaa1 < (( len W1) - 0 ) by XREAL_1: 15;

            x in ( dom W1) by A12, A15, FINSEQ_3: 25;

            

            hence (W4 . x) = (W1 . (xaa1 + 1)) by Lm12

            .= (W3 . x) by A1, A4, A14, A16, Lm15;

          end;

            suppose x > ( len W1);

            then

            consider k be Nat such that

             A17: (( len W1) + k) = x by NAT_1: 10;

            reconsider k as Element of NAT by ORDINAL1:def 12;

            ((( len W1) + k) + 1) <= (( len W3) + 1) by A10, A13, A17, XREAL_1: 7;

            then (((k + 1) + ( len W1)) - ( len W1)) <= ((( len W2) + ( len W1)) - ( len W1)) by A8, A9, A6, XREAL_1: 13;

            then

             A18: ((k + 1) - 1) < ((( len W2) + 1) - 1) by NAT_1: 13;

            

            then (W4 . x) = (W2 . (k + 1)) by A7, A17, Lm13

            .= (W . (n + k)) by A2, A3, A18, Lm15;

            hence (W4 . x) = (W3 . x) by A8, A14, A17;

          end;

        end;

        hence (W4 . x) = (W3 . x);

      end;

      hence thesis by FINSEQ_2: 9;

    end;

    

     Lm18: for G be _Graph, W be Walk of G holds (W .cut (1,( len W))) = W

    proof

      let G be _Graph, W be Walk of G;

      1 <= ( len W) by ABIAN: 12;

      then (W .cut (1,( len W))) = ((1,( len W)) -cut W) by Def11, JORDAN12: 2;

      hence thesis by FINSEQ_6: 133;

    end;

    

     Lm19: for G be _Graph, W be Walk of G, n be odd Element of NAT st n <= ( len W) holds (W .cut (n,n)) = <*(W .vertexAt n)*>

    proof

      let G be _Graph, W be Walk of G, n be odd Element of NAT ;

      

       A1: 1 <= n by ABIAN: 12;

      assume

       A2: n <= ( len W);

      then

       A3: (W . n) = (W .vertexAt n) by Def8;

      (W .cut (n,n)) = ((n,n) -cut W) by A2, Def11;

      hence thesis by A2, A3, A1, FINSEQ_6: 132;

    end;

    

     Lm20: for G be _Graph, W be Walk of G, m,n be Element of NAT holds m is odd & m <= n implies ((W .cut (1,n)) .cut (1,m)) = (W .cut (1,m))

    proof

      let G be _Graph, W be Walk of G, m,n be Element of NAT ;

      set W1 = (W .cut (1,n));

      assume that

       A1: m is odd and

       A2: m <= n;

      now

        per cases ;

          suppose

           A3: n is odd & n <= ( len W);

          

           A4: 1 <= m by A1, ABIAN: 12;

          

           A5: 1 <= n by A3, ABIAN: 12;

          then

           A6: (( len W1) + 1) = (n + 1) by A3, Lm15, JORDAN12: 2;

          then

           A7: (( len (W1 .cut (1,m))) + 1) = (m + 1) by A1, A2, A4, Lm15, JORDAN12: 2;

          

           A8: m <= ( len W) by A2, A3, XXREAL_0: 2;

          then

           A9: (W .cut (1,m)) = ((1,m) -cut W) by A1, A4, Def11, JORDAN12: 2;

          

           A10: (( len (W .cut (1,m))) + 1) = (m + 1) by A1, A4, A8, Lm15, JORDAN12: 2;

          

           A11: W1 = ((1,n) -cut W) by A3, A5, Def11, JORDAN12: 2;

          

           A12: (W1 .cut (1,m)) = ((1,m) -cut W1) by A1, A2, A4, A6, Def11, JORDAN12: 2;

           A13:

          now

            let x be Nat;

            assume

             A14: x in ( dom (W1 .cut (1,m)));

            then

             A15: x <= m by A7, FINSEQ_3: 25;

            

             A16: 1 <= x by A14, FINSEQ_3: 25;

            then

            reconsider xaa1 = (x - 1) as Element of NAT by INT_1: 5;

            

             A17: 1 <= m by A16, A15, XXREAL_0: 2;

            

             A18: xaa1 < (( len (W .cut (1,m))) - 0 ) by A10, A15, XREAL_1: 15;

            x <= n by A2, A15, XXREAL_0: 2;

            then

             A19: xaa1 < (( len W1) - 0 ) by A6, XREAL_1: 15;

            xaa1 < (( len (W1 .cut (1,m))) - 0 ) by A7, A15, XREAL_1: 15;

            

            hence ((W1 .cut (1,m)) . x) = (W1 . (1 + xaa1)) by A2, A6, A12, A17, FINSEQ_6:def 4

            .= (W . (1 + xaa1)) by A3, A5, A11, A19, FINSEQ_6:def 4

            .= ((W .cut (1,m)) . x) by A4, A8, A9, A18, FINSEQ_6:def 4;

          end;

          (( len (W .cut (1,m))) + 1) = (m + 1) by A1, A4, A8, Lm15, JORDAN12: 2;

          hence thesis by A7, A13, FINSEQ_2: 9;

        end;

          suppose not (n is odd & n <= ( len W));

          hence thesis by Def11;

        end;

      end;

      hence thesis;

    end;

    

     Lm21: for G be _Graph, W1,W2 be Walk of G, m,n be odd Element of NAT st m <= n & n <= ( len W1) & (W1 .last() ) = (W2 .first() ) holds ((W1 .append W2) .cut (m,n)) = (W1 .cut (m,n))

    proof

      let G be _Graph, W1,W2 be Walk of G, m,n be odd Element of NAT ;

      assume that

       A1: m <= n and

       A2: n <= ( len W1) and

       A3: (W1 .last() ) = (W2 .first() );

      

       A4: (W1 .cut (m,n)) = ((m,n) -cut W1) by A1, A2, Def11;

      set W3 = (W1 .append W2);

      ( len W1) <= ( len W3) by A3, Lm10;

      then

       A5: n <= ( len W3) by A2, XXREAL_0: 2;

      

      then

       A6: (( len (W3 .cut (m,n))) + m) = (n + 1) by A1, Lm15

      .= (( len (W1 .cut (m,n))) + m) by A1, A2, Lm15;

      

       A7: 1 <= m by ABIAN: 12;

      

       A8: (W3 .cut (m,n)) = ((m,n) -cut W3) by A1, A5, Def11;

      now

        let x be Nat;

        assume

         A9: x in ( dom (W1 .cut (m,n)));

        then 1 <= x by FINSEQ_3: 25;

        then

        reconsider xaa1 = (x - 1) as Element of NAT by INT_1: 5;

        

         A10: x <= ( len (W1 .cut (m,n))) by A9, FINSEQ_3: 25;

        then

         A11: xaa1 < (( len (W1 .cut (m,n))) - 0 ) by XREAL_1: 15;

        (( len (W1 .cut (m,n))) + m) = (n + 1) by A1, A2, Lm15;

        then (m + xaa1) < (n + 1) by A11, XREAL_1: 8;

        then (m + xaa1) <= n by NAT_1: 13;

        then

         A12: (m + xaa1) <= ( len W1) by A2, XXREAL_0: 2;

        1 <= (m + xaa1) by ABIAN: 12, NAT_1: 12;

        then

         A13: (m + xaa1) in ( dom W1) by A12, FINSEQ_3: 25;

        

         A14: (xaa1 + 1) = x;

        xaa1 < (( len (W3 .cut (m,n))) - 0 ) by A6, A10, XREAL_1: 15;

        then

         A15: ((W3 .cut (m,n)) . x) = (W3 . (m + xaa1)) by A1, A5, A8, A7, A14, FINSEQ_6:def 4;

        ((W1 .cut (m,n)) . x) = (W1 . (m + xaa1)) by A1, A2, A4, A7, A14, A11, FINSEQ_6:def 4;

        hence ((W3 .cut (m,n)) . x) = ((W1 .cut (m,n)) . x) by A15, A13, Lm12;

      end;

      hence thesis by A6, FINSEQ_2: 9;

    end;

    

     Lm22: for G be _Graph, W be Walk of G, m be odd Element of NAT st m <= ( len W) holds ( len (W .cut (1,m))) = m

    proof

      let G be _Graph, W be Walk of G, m be odd Element of NAT ;

      

       A1: 1 <= m by ABIAN: 12;

      assume m <= ( len W);

      then (( len (W .cut (1,m))) + 1) = (m + 1) by A1, Lm15, JORDAN12: 2;

      hence thesis;

    end;

    

     Lm23: for G be _Graph, W be Walk of G, m be odd Element of NAT , x be Element of NAT st x in ( dom (W .cut (1,m))) & m <= ( len W) holds ((W .cut (1,m)) . x) = (W . x)

    proof

      let G be _Graph, W be Walk of G, m be odd Element of NAT , x be Element of NAT ;

      assume that

       A1: x in ( dom (W .cut (1,m))) and

       A2: m <= ( len W);

      x <= ( len (W .cut (1,m))) by A1, FINSEQ_3: 25;

      then

       A3: (x - 1) < (( len (W .cut (1,m))) - 0 ) by XREAL_1: 15;

      1 <= x by A1, FINSEQ_3: 25;

      then

      reconsider xaa1 = (x - 1) as Element of NAT by INT_1: 5;

      

       A4: 1 <= m by ABIAN: 12;

      (xaa1 + 1) = x;

      hence thesis by A2, A4, A3, Lm15, JORDAN12: 2;

    end;

    

     Lm24: for G be _Graph, W be Walk of G, m,n be odd Element of NAT st m <= n & n <= ( len W) & (W . m) = (W . n) holds (( len (W .remove (m,n))) + n) = (( len W) + m)

    proof

      let G be _Graph, W be Walk of G, m,n be odd Element of NAT ;

      set W1 = (W .cut (1,m)), W2 = (W .cut (n,( len W)));

      assume that

       A1: m <= n and

       A2: n <= ( len W) and

       A3: (W . m) = (W . n);

      

       A4: (W .remove (m,n)) = (W1 .append W2) by A1, A2, A3, Def12;

      

       A5: (( len W2) + n) = (( len W) + 1) by A2, Lm15;

      

       A6: (W . n) = (W2 .first() ) by A2, Lm16;

      

       A7: 1 <= m by ABIAN: 12;

      

       A8: m <= ( len W) by A1, A2, XXREAL_0: 2;

      then

       A9: (( len W1) + 1) = (m + 1) by A7, Lm15, JORDAN12: 2;

      (W1 .last() ) = (W . n) by A3, A7, A8, Lm16, JORDAN12: 2;

      

      then (( len (W1 .append W2)) + 1) = (m + ((( len W) + 1) + ( - n))) by A6, A9, A5, Lm9

      .= (((( len W) + m) + ( - n)) + 1);

      hence thesis by A4;

    end;

    

     Lm25: for G be _Graph, W be Walk of G, m,n be Element of NAT , x,y be set holds W is_Walk_from (x,y) implies (W .remove (m,n)) is_Walk_from (x,y)

    proof

      let G be _Graph, W be Walk of G, m,n be Element of NAT , x,y be set;

      set W2 = (W .remove (m,n)), WA = (W .cut (1,m)), WB = (W .cut (n,( len W)));

      assume

       A1: W is_Walk_from (x,y);

      now

        per cases ;

          suppose

           A2: m is odd & n is odd & m <= n & n <= ( len W) & (W . m) = (W . n);

          

          then

           A3: (WB .last() ) = (W .last() ) by Lm16

          .= y by A1;

          

           A4: W2 = (WA .append WB) by A2, Def12;

          

           A5: m <= ( len W) by A2, XXREAL_0: 2;

          

           A6: 1 <= m by A2, ABIAN: 12;

          

          then

           A7: (WA .first() ) = (W .first() ) by A2, A5, Lm16, JORDAN12: 2

          .= x by A1;

          (WA .last() ) = (W . n) by A2, A6, A5, Lm16, JORDAN12: 2

          .= (WB .first() ) by A2, Lm16;

          hence thesis by A4, A7, A3, Lm11;

        end;

          suppose not (m is odd & n is odd & m <= n & n <= ( len W) & (W . m) = (W . n));

          hence thesis by A1, Def12;

        end;

      end;

      hence thesis;

    end;

    

     Lm26: for G be _Graph, W be Walk of G, m,n be Element of NAT holds ( len (W .remove (m,n))) <= ( len W)

    proof

      let G be _Graph, W be Walk of G, m,n be Element of NAT ;

      set W2 = (W .remove (m,n));

      now

        per cases ;

          suppose

           A1: m is odd & n is odd & m <= n & n <= ( len W) & (W . m) = (W . n);

          then (( len W2) + n) = (( len W) + m) by Lm24;

          then ((( len W2) + n) - n) <= ((( len W) + m) - m) by A1, XREAL_1: 13;

          hence thesis;

        end;

          suppose not (m is odd & n is odd & m <= n & n <= ( len W) & (W . m) = (W . n));

          hence thesis by Def12;

        end;

      end;

      hence thesis;

    end;

    

     Lm27: for G be _Graph, W be Walk of G, m be Element of NAT holds (W .remove (m,m)) = W

    proof

      let G be _Graph, W be Walk of G, m be Element of NAT ;

      now

        per cases ;

          suppose

           A1: m is odd & m <= ( len W) & (W . m) = (W . m);

          then

           A2: 1 <= m by ABIAN: 12;

          

          thus (W .remove (m,m)) = ((W .cut (1,m)) .append (W .cut (m,( len W)))) by A1, Def12

          .= (W .cut (1,( len W))) by A1, A2, Lm17, JORDAN12: 2

          .= W by Lm18;

        end;

          suppose not (m is odd & m <= ( len W) & (W . m) = (W . m));

          hence thesis by Def12;

        end;

      end;

      hence thesis;

    end;

    

     Lm28: for G be _Graph, W be Walk of G, m,n be odd Element of NAT st m <= n & n <= ( len W) & (W . m) = (W . n) holds ((W .cut (1,m)) .last() ) = ((W .cut (n,( len W))) .first() )

    proof

      let G be _Graph, W be Walk of G, m,n be odd Element of NAT ;

      assume that

       A1: m <= n and

       A2: n <= ( len W) and

       A3: (W . m) = (W . n);

      

       A4: 1 <= m by ABIAN: 12;

      m <= ( len W) by A1, A2, XXREAL_0: 2;

      

      hence ((W .cut (1,m)) .last() ) = (W . n) by A3, A4, Lm16, JORDAN12: 2

      .= ((W .cut (n,( len W))) .first() ) by A2, Lm16;

    end;

    

     Lm29: for G be _Graph, W be Walk of G, x,y be set, m,n be odd Element of NAT st m <= n & n <= ( len W) & (W . m) = (W . n) holds for x be Element of NAT st x in ( Seg m) holds ((W .remove (m,n)) . x) = (W . x)

    proof

      let G be _Graph, W be Walk of G, x,y be set, m,n be odd Element of NAT ;

      set W2 = (W .remove (m,n));

      assume that

       A1: m <= n and

       A2: n <= ( len W) and

       A3: (W . m) = (W . n);

      let x be Element of NAT ;

      assume

       A4: x in ( Seg m);

      then x <= m by FINSEQ_1: 1;

      then

       A5: x <= ( len (W .cut (1,m))) by A1, A2, Lm22, XXREAL_0: 2;

      1 <= x by A4, FINSEQ_1: 1;

      then

       A6: x in ( dom (W .cut (1,m))) by A5, FINSEQ_3: 25;

      W2 = ((W .cut (1,m)) .append (W .cut (n,( len W)))) by A1, A2, A3, Def12;

      

      hence (W2 . x) = ((W .cut (1,m)) . x) by A6, Lm12

      .= (W . x) by A1, A2, A6, Lm23, XXREAL_0: 2;

    end;

    

     Lm30: for G be _Graph, W be Walk of G, m,n be odd Element of NAT st m <= n & n <= ( len W) & (W . m) = (W . n) holds for x be Element of NAT st m <= x & x <= ( len (W .remove (m,n))) holds ((W .remove (m,n)) . x) = (W . ((x - m) + n)) & ((x - m) + n) is Element of NAT & ((x - m) + n) <= ( len W)

    proof

      let G be _Graph, W be Walk of G, m,n be odd Element of NAT ;

      set W2 = (W .remove (m,n)), WA = (W .cut (1,m)), WB = (W .cut (n,( len W)));

      assume that

       A1: m <= n and

       A2: n <= ( len W) and

       A3: (W . m) = (W . n);

      

       A4: (WA .last() ) = (WB .first() ) by A1, A2, A3, Lm28;

      let x be Element of NAT ;

      assume that

       A5: m <= x and

       A6: x <= ( len W2);

      

       A7: ( len WA) = m by A1, A2, Lm22, XXREAL_0: 2;

      then

      consider a be Nat such that

       A8: (( len WA) + a) = x by A5, NAT_1: 10;

      reconsider a as Element of NAT by ORDINAL1:def 12;

      (( len W2) + n) = (( len W) + m) by A1, A2, A3, Lm24;

      then ((m + a) + n) <= (m + ( len W)) by A7, A6, A8, XREAL_1: 7;

      then

       A9: (((a + n) + m) - m) <= ((( len W) + m) - m) by XREAL_1: 13;

      (( len WB) + n) = (( len W) + 1) by A2, Lm15;

      then ((a + n) + 1) <= (( len WB) + n) by A9, XREAL_1: 7;

      then (((a + 1) + n) - n) <= ((( len WB) + n) - n) by XREAL_1: 13;

      then

       A10: ((a + 1) - 1) < ((( len WB) + 1) - 1) by NAT_1: 13;

      W2 = (WA .append WB) by A1, A2, A3, Def12;

      

      then (W2 . x) = (WB . (a + 1)) by A4, A8, A10, Lm13

      .= (W . (a + n)) by A2, A10, Lm15;

      hence (W2 . x) = (W . ((x - m) + n)) by A7, A8;

      (a + n) is Element of NAT ;

      hence ((x - m) + n) is Element of NAT by A7, A8;

      thus thesis by A7, A8, A9;

    end;

    

     Lm31: for G be _Graph, W be Walk of G, m,n be odd Element of NAT st m <= n & n <= ( len W) & (W . m) = (W . n) holds ( len (W .remove (m,n))) = ((( len W) + m) - n)

    proof

      let G be _Graph, W be Walk of G, m,n be odd Element of NAT ;

      assume that

       A1: m <= n and

       A2: n <= ( len W) and

       A3: (W . m) = (W . n);

      (( len (W .remove (m,n))) + n) = (( len W) + m) by A1, A2, A3, Lm24;

      hence thesis;

    end;

    

     Lm32: for G be _Graph, W be Walk of G, m be Element of NAT st (W .first() ) = (W . m) holds (W .remove (1,m)) = (W .cut (m,( len W)))

    proof

      let G be _Graph, W be Walk of G, m be Element of NAT ;

      assume

       A1: (W .first() ) = (W . m);

      now

        per cases ;

          suppose

           A2: m is odd & m <= ( len W);

          then 1 <= m by ABIAN: 12;

          then

           A3: (W .remove (1,m)) = ((W .cut (1,1)) .append (W .cut (m,( len W)))) by A1, A2, Def12, JORDAN12: 2;

          

           A4: 1 <= ( len W) by ABIAN: 12;

          

          then

           A5: ((W .cut (1,1)) .last() ) = (W . m) by A1, Lm16, JORDAN12: 2

          .= ((W .cut (m,( len W))) .first() ) by A2, Lm16;

           A6:

          now

            let n be Nat;

            assume that

             A7: 1 <= n and

             A8: n <= ( len (W .remove (1,m)));

            

             A9: n in ( dom (W .remove (1,m))) by A7, A8, FINSEQ_3: 25;

            now

              per cases by A3, A9, Lm14;

                suppose

                 A10: n in ( dom (W .cut (1,1)));

                then n <= ( len (W .cut (1,1))) by FINSEQ_3: 25;

                then

                 A11: n <= 1 by A4, Lm22, JORDAN12: 2;

                

                 A12: 1 <= n by A10, FINSEQ_3: 25;

                then

                 A13: n = 1 by A11, XXREAL_0: 1;

                ((W .remove (1,m)) . n) = ((W .cut (1,1)) . n) by A3, A10, Lm12

                .= ( <*(W .vertexAt 1)*> . 1) by A4, A13, Lm19, JORDAN12: 2

                .= (W .vertexAt 1) by FINSEQ_1:def 8

                .= (W . m) by A1, A4, Def8, JORDAN12: 2

                .= ((W .cut (m,( len W))) .first() ) by A2, Lm16

                .= ((W .cut (m,( len W))) . 1);

                hence ((W .remove (1,m)) . n) = ((W .cut (m,( len W))) . n) by A12, A11, XXREAL_0: 1;

              end;

                suppose ex k be Element of NAT st k < ( len (W .cut (m,( len W)))) & n = (( len (W .cut (1,1))) + k);

                then

                consider k be Element of NAT such that

                 A14: k < ( len (W .cut (m,( len W)))) and

                 A15: n = (( len (W .cut (1,1))) + k);

                n = (k + 1) by A14, A15, Lm22, ABIAN: 12, JORDAN12: 2;

                hence ((W .remove (1,m)) . n) = ((W .cut (m,( len W))) . n) by A3, A5, A14, A15, Lm13;

              end;

            end;

            hence ((W .remove (1,m)) . n) = ((W .cut (m,( len W))) . n);

          end;

          (( len (W .remove (1,m))) + 1) = (( len (W .cut (1,1))) + ( len (W .cut (m,( len W))))) by A3, A5, Lm9;

          then (( len (W .remove (1,m))) + 1) = (( len (W .cut (m,( len W)))) + 1) by Lm22, ABIAN: 12, JORDAN12: 2;

          hence thesis by A6, FINSEQ_1: 14;

        end;

          suppose

           A16: not (m is odd & m <= ( len W));

          then (W .cut (m,( len W))) = W by Def11;

          hence thesis by A16, Def12;

        end;

      end;

      hence thesis;

    end;

    

     Lm33: for G be _Graph, W be Walk of G, m,n be Element of NAT holds ((W .remove (m,n)) .first() ) = (W .first() ) & ((W .remove (m,n)) .last() ) = (W .last() )

    proof

      let G be _Graph, W be Walk of G, m,n be Element of NAT ;

      W is_Walk_from ((W .first() ),(W .last() ));

      then (W .remove (m,n)) is_Walk_from ((W .first() ),(W .last() )) by Lm25;

      hence thesis;

    end;

    

     Lm34: for G be _Graph, W be Walk of G, m,n be odd Element of NAT , x be Element of NAT st x in ( dom (W .remove (m,n))) holds x in ( Seg m) or m <= x & x <= ( len (W .remove (m,n)))

    proof

      let G be _Graph, W be Walk of G, m,n be odd Element of NAT , x be Element of NAT ;

      assume that

       A1: x in ( dom (W .remove (m,n)));

      1 <= x by A1, FINSEQ_3: 25;

      hence thesis by A1, FINSEQ_1: 1, FINSEQ_3: 25;

    end;

    

     Lm35: for G be _Graph, W be Walk of G, e,x be object holds e Joins ((W .last() ),x,G) implies (W .addEdge e) = (W ^ <*e, x*>)

    proof

      let G be _Graph, W be Walk of G, e,x be object;

      set W1 = (G .walkOf ((W .last() ),e,((W .last() ) .adj e)));

      assume

       A1: e Joins ((W .last() ),x,G);

      then

      reconsider x9 = x as Vertex of G by GLIB_000: 13;

      

       A2: ((W .last() ) .adj e) = x9 by A1, GLIB_000: 66;

      then

       A3: W1 = <*(W .last() ), e, x*> by A1, Def5;

      then

       A4: ( len W1) = 3 by FINSEQ_1: 45;

      

       A5: (W1 . 3) = x by A3, FINSEQ_1: 45;

      (W1 . 2) = e by A3, FINSEQ_1: 45;

      then ((2,2) -cut W1) = <*e*> by A4, FINSEQ_6: 132;

      then ( <*e*> ^ (((2 + 1),3) -cut W1)) = (((1 + 1),3) -cut W1) by A4, FINSEQ_6: 134;

      then

       A6: ( <*e*> ^ <*x*>) = ((2,3) -cut W1) by A4, A5, FINSEQ_6: 132;

      (W .last() ) = (W1 .first() ) by A1, A2, Lm6;

      

      then (W .append W1) = (W ^' W1) by Def10

      .= (W ^ ((2,( len W1)) -cut W1)) by FINSEQ_6:def 5

      .= (W ^ ((2,3) -cut W1)) by A3, FINSEQ_1: 45;

      hence thesis by A6, FINSEQ_1:def 9;

    end;

    

     Lm36: for G be _Graph, W be Walk of G, e,x be object holds e Joins ((W .last() ),x,G) implies ((W .addEdge e) .first() ) = (W .first() ) & ((W .addEdge e) .last() ) = x & (W .addEdge e) is_Walk_from ((W .first() ),x)

    proof

      let G be _Graph, W be Walk of G, e,x be object;

      set W2 = (G .walkOf ((W .last() ),e,((W .last() ) .adj e)));

      assume

       A1: e Joins ((W .last() ),x,G);

      then

      reconsider x9 = x as Vertex of G by GLIB_000: 13;

      

       A2: ((W .last() ) .adj e) = x9 by A1, GLIB_000: 66;

      then

       A3: (W2 .last() ) = x by A1, Lm6;

      (W2 .first() ) = (W .last() ) by A1, A2, Lm6;

      hence thesis by A3, Lm11;

    end;

    

     Lm37: for G be _Graph, W be Walk of G, e,x be object holds e Joins ((W .last() ),x,G) implies ( len (W .addEdge e)) = (( len W) + 2)

    proof

      let G be _Graph, W be Walk of G, e,x be object;

      set W2 = (G .walkOf ((W .last() ),e,((W .last() ) .adj e)));

      assume

       A1: e Joins ((W .last() ),x,G);

      then

      reconsider x9 = x as Vertex of G by GLIB_000: 13;

      

       A2: ((W .last() ) .adj e) = x9 by A1, GLIB_000: 66;

      then (W2 .first() ) = (W .last() ) by A1, Lm6;

      then

       A3: (( len (W .addEdge e)) + 1) = (( len W) + ( len W2)) by Lm9;

      W2 = <*(W .last() ), e, x*> by A1, A2, Def5;

      then (( len (W .addEdge e)) + 1) = (( len W) + 3) by A3, FINSEQ_1: 45;

      hence thesis;

    end;

    

     Lm38: for G be _Graph, W be Walk of G, e,x be object holds e Joins ((W .last() ),x,G) implies ((W .addEdge e) . (( len W) + 1)) = e & ((W .addEdge e) . (( len W) + 2)) = x & for n be Element of NAT st n in ( dom W) holds ((W .addEdge e) . n) = (W . n)

    proof

      let G be _Graph, W be Walk of G, e,x be object;

      set W2 = (W .addEdge e);

      

       A1: ( <*e, x*> . 1) = e by FINSEQ_1: 44;

      assume e Joins ((W .last() ),x,G);

      then

       A2: W2 = (W ^ <*e, x*>) by Lm35;

      

       A3: ( dom <*e, x*>) = ( Seg 2) by FINSEQ_1: 89;

      then 1 in ( dom <*e, x*>) by FINSEQ_1: 1;

      hence (W2 . (( len W) + 1)) = e by A2, A1, FINSEQ_1:def 7;

      

       A4: ( <*e, x*> . 2) = x by FINSEQ_1: 44;

      2 in ( dom <*e, x*>) by A3, FINSEQ_1: 1;

      hence (W2 . (( len W) + 2)) = x by A2, A4, FINSEQ_1:def 7;

      let n be Element of NAT ;

      assume n in ( dom W);

      hence thesis by A2, FINSEQ_1:def 7;

    end;

    

     Lm39: for G be _Graph, W be Walk of G, e,x,y,z be object holds W is_Walk_from (x,y) & e Joins (y,z,G) implies (W .addEdge e) is_Walk_from (x,z) by Lm36;

    

     Lm40: for G be _Graph, W be Walk of G, n be even Nat st 1 <= n & n <= ( len W) holds (n div 2) in ( dom (W .edgeSeq() )) & (W . n) = ((W .edgeSeq() ) . (n div 2))

    proof

      let G be _Graph, W be Walk of G, n be even Nat;

      assume that

       A1: 1 <= n and

       A2: n <= ( len W);

      

       A3: 2 divides n by PEPIN: 22;

      then

       A4: n = (2 * (n div 2)) by NAT_D: 3;

       A5:

      now

        assume

         A6: not (n div 2) in ( dom (W .edgeSeq() ));

        now

          per cases by A6, FINSEQ_3: 25;

            suppose (n div 2) < ( 0 + 1);

            then (n div 2) = 0 by NAT_1: 13;

            then n = (2 * 0 ) by A3, NAT_D: 3;

            hence contradiction by A1;

          end;

            suppose (n div 2) > ( len (W .edgeSeq() ));

            then (2 * (n div 2)) > (2 * ( len (W .edgeSeq() ))) by XREAL_1: 68;

            then (n + 1) > ((2 * ( len (W .edgeSeq() ))) + 1) by A4, XREAL_1: 8;

            then (n + 1) > ( len W) by Def15;

            then n >= ( len W) by NAT_1: 13;

            hence contradiction by A2, XXREAL_0: 1;

          end;

        end;

        hence contradiction;

      end;

      hence (n div 2) in ( dom (W .edgeSeq() ));

      

       A7: (n div 2) <= ( len (W .edgeSeq() )) by A5, FINSEQ_3: 25;

      1 <= (n div 2) by A5, FINSEQ_3: 25;

      hence thesis by A4, A7, Def15;

    end;

    

     Lm41: for G be _Graph, W be Walk of G, n be Nat holds n in ( dom (W .edgeSeq() )) iff (2 * n) in ( dom W)

    proof

      let G be _Graph, W be Walk of G, n be Nat;

      hereby

        assume

         A1: n in ( dom (W .edgeSeq() ));

        then n <= ( len (W .edgeSeq() )) by FINSEQ_3: 25;

        then (2 * n) <= (( len (W .edgeSeq() )) * 2) by NAT_1: 4;

        then (2 * n) <= ((( len (W .edgeSeq() )) * 2) + 1) by NAT_1: 12;

        then

         A2: (2 * n) <= ( len W) by Def15;

        1 <= n by A1, FINSEQ_3: 25;

        then 1 <= (n + n) by NAT_1: 12;

        hence (2 * n) in ( dom W) by A2, FINSEQ_3: 25;

      end;

      assume

       A3: (2 * n) in ( dom W);

      then

       A4: (2 * n) <= ( len W) by FINSEQ_3: 25;

      1 <= (2 * n) by A3, FINSEQ_3: 25;

      then ((2 * n) div 2) in ( dom (W .edgeSeq() )) by A4, Lm40;

      hence thesis by NAT_D: 18;

    end;

    

     Lm42: for G be _Graph, W be Walk of G holds ex lenWaa1 be even Element of NAT st lenWaa1 = (( len W) - 1) & ( len (W .edgeSeq() )) = (lenWaa1 div 2)

    proof

      let G be _Graph, W be Walk of G;

      set lenWaa1 = (( len W) - 1);

      reconsider lenWaa1 as even Element of NAT by ABIAN: 12, INT_1: 5;

      take lenWaa1;

      thus lenWaa1 = (( len W) - 1);

      2 divides lenWaa1 by PEPIN: 22;

      then

       A1: lenWaa1 = (2 * (lenWaa1 div 2)) by NAT_D: 3;

      ( len W) = ((2 * ( len (W .edgeSeq() ))) + 1) by Def15;

      hence thesis by A1;

    end;

    

     Lm43: for G be _Graph, W be Walk of G, n be Element of NAT holds ((W .cut (1,n)) .edgeSeq() ) c= (W .edgeSeq() )

    proof

      let G be _Graph, W be Walk of G, n be Element of NAT ;

      per cases ;

        suppose

         A1: n is odd & 1 <= n & n <= ( len W);

        set f = ((W .cut (1,n)) .edgeSeq() );

        now

          let e be object;

          assume

           A2: e in ((W .cut (1,n)) .edgeSeq() );

          then

          consider x,y be object such that

           A3: e = [x, y] by RELAT_1:def 1;

          

           A4: y = (f . x) by A2, A3, FUNCT_1: 1;

          

           A5: x in ( dom f) by A2, A3, FUNCT_1: 1;

          then

          reconsider x as Element of NAT ;

          

           A6: x <= ( len f) by A5, FINSEQ_3: 25;

          

           A7: (2 * x) in ( dom (W .cut (1,n))) by A5, Lm41;

          then (2 * x) <= ( len (W .cut (1,n))) by FINSEQ_3: 25;

          then (2 * x) <= n by A1, Lm22;

          then

           A8: (2 * x) <= ( len W) by A1, XXREAL_0: 2;

          1 <= (2 * x) by A7, FINSEQ_3: 25;

          then (2 * x) in ( dom W) by A8, FINSEQ_3: 25;

          then

           A9: x in ( dom (W .edgeSeq() )) by Lm41;

          then

           A10: x <= ( len (W .edgeSeq() )) by FINSEQ_3: 25;

          1 <= x by A5, FINSEQ_3: 25;

          then y = ((W .cut (1,n)) . (2 * x)) by A4, A6, Def15;

          then

           A11: y = (W . (2 * x)) by A1, A7, Lm23;

          1 <= x by A9, FINSEQ_3: 25;

          then ((W .edgeSeq() ) . x) = y by A11, A10, Def15;

          hence e in (W .edgeSeq() ) by A3, A9, FUNCT_1: 1;

        end;

        hence thesis by TARSKI:def 3;

      end;

        suppose not (n is odd & 1 <= n & n <= ( len W));

        hence thesis by Def11;

      end;

    end;

    

     Lm44: for G be _Graph, W be Walk of G, e,x be object holds e Joins ((W .last() ),x,G) implies ((W .addEdge e) .edgeSeq() ) = ((W .edgeSeq() ) ^ <*e*>)

    proof

      let G be _Graph, W be Walk of G, e,x be object;

      set W2 = (W .addEdge e), W3 = ((W .edgeSeq() ) ^ <*e*>);

      assume

       A1: e Joins ((W .last() ),x,G);

      then ( len W2) = (( len W) + 2) by Lm37;

      then (( len W) + 2) = ((2 * ( len (W2 .edgeSeq() ))) + 1) by Def15;

      then (2 + ((2 * ( len (W .edgeSeq() ))) + 1)) = ((2 * ( len (W2 .edgeSeq() ))) + 1) by Def15;

      then

       A2: (2 * (( len (W .edgeSeq() )) + 1)) = (2 * ( len (W2 .edgeSeq() )));

      ( len W3) = (( len (W .edgeSeq() )) + ( len <*e*>)) by FINSEQ_1: 22;

      then

       A3: (2 * ( len W3)) = (2 * ( len (W2 .edgeSeq() ))) by A2, FINSEQ_1: 39;

      now

        let k be Nat;

        assume that

         A4: 1 <= k and

         A5: k <= ( len (W2 .edgeSeq() ));

        

         A6: ((W2 .edgeSeq() ) . k) = (W2 . (2 * k)) by A4, A5, Def15;

        

         A7: k in ( dom W3) by A3, A4, A5, FINSEQ_3: 25;

        now

          per cases by A7, FINSEQ_1: 25;

            suppose

             A8: k in ( dom (W .edgeSeq() ));

            then

             A9: (2 * k) in ( dom W) by Lm41;

            

             A10: 1 <= k by A8, FINSEQ_3: 25;

            

             A11: k <= ( len (W .edgeSeq() )) by A8, FINSEQ_3: 25;

            (W3 . k) = ((W .edgeSeq() ) . k) by A8, FINSEQ_1:def 7;

            then (W3 . k) = (W . (2 * k)) by A10, A11, Def15;

            hence ((W2 .edgeSeq() ) . k) = (W3 . k) by A1, A6, A9, Lm38;

          end;

            suppose ex n be Nat st n in ( dom <*e*>) & k = (( len (W .edgeSeq() )) + n);

            then

            consider n be Element of NAT such that

             A12: n in ( dom <*e*>) and

             A13: k = (( len (W .edgeSeq() )) + n);

            n in {1} by A12, FINSEQ_1: 2, FINSEQ_1: 38;

            then

             A14: n = 1 by TARSKI:def 1;

            

            then

             A15: (2 * k) = (((2 * ( len (W .edgeSeq() ))) + 1) + 1) by A13

            .= (( len W) + 1) by Def15;

            (W3 . k) = ( <*e*> . 1) by A12, A13, A14, FINSEQ_1:def 7

            .= e by FINSEQ_1:def 8;

            hence ((W2 .edgeSeq() ) . k) = (W3 . k) by A1, A6, A15, Lm38;

          end;

        end;

        hence ((W2 .edgeSeq() ) . k) = (W3 . k);

      end;

      hence thesis by A3, FINSEQ_1: 14;

    end;

    

     Lm45: for G be _Graph, W be Walk of G, x be set holds x in (W .vertices() ) iff ex n be odd Element of NAT st n <= ( len W) & (W . n) = x

    proof

      let G be _Graph, W be Walk of G, x be set;

      set vs = (W .vertexSeq() );

      hereby

        assume x in (W .vertices() );

        then

        consider i be Nat such that

         A1: i in ( dom vs) and

         A2: (vs . i) = x by FINSEQ_2: 10;

        set n1 = (2 * i);

        reconsider n1 as even Nat;

        set n = (n1 - 1);

        

         A3: 1 <= i by A1, FINSEQ_3: 25;

        then 1 <= (i + i) by NAT_1: 12;

        then

        reconsider n as odd Element of NAT by INT_1: 5;

        take n;

        

         A4: i <= ( len vs) by A1, FINSEQ_3: 25;

        then (i * 2) <= (( len vs) * 2) by XREAL_1: 64;

        then (i * 2) <= (( len W) + 1) by Def14;

        then (n1 - 1) <= ((( len W) + 1) - 1) by XREAL_1: 13;

        hence n <= ( len W);

        thus (W . n) = x by A2, A3, A4, Def14;

      end;

      assume ex n be odd Element of NAT st n <= ( len W) & (W . n) = x;

      then

      consider n be odd Element of NAT such that

       A5: n <= ( len W) and

       A6: (W . n) = x;

      set n1 = (n + 1);

      reconsider n1 as even Element of NAT ;

      set i = (n1 div 2);

      

       A7: 2 divides n1 by PEPIN: 22;

      then

       A8: (2 * i) = n1 by NAT_D: 3;

      reconsider i as Element of NAT ;

      1 <= n by ABIAN: 12;

      then (1 + 1) <= n1 by XREAL_1: 7;

      then (2 * 1) <= (2 * i) by A7, NAT_D: 3;

      then

       A9: 1 <= i by XREAL_1: 68;

      n1 <= (( len W) + 1) by A5, XREAL_1: 7;

      then (2 * i) <= (2 * ( len vs)) by A8, Def14;

      then

       A10: i <= ( len vs) by XREAL_1: 68;

      then

       A11: i in ( dom vs) by A9, FINSEQ_3: 25;

      (vs . i) = (W . ((2 * i) - 1)) by A9, A10, Def14

      .= x by A6, A8;

      hence thesis by A11, FUNCT_1:def 3;

    end;

    

     Lm46: for G be _Graph, W be Walk of G, e be set holds e in (W .edges() ) iff ex n be even Element of NAT st 1 <= n & n <= ( len W) & (W . n) = e

    proof

      let G be _Graph, W be Walk of G, e be set;

      set es = (W .edgeSeq() );

      hereby

        assume e in (W .edges() );

        then

        consider i be Nat such that

         A1: i in ( dom es) and

         A2: (es . i) = e by FINSEQ_2: 10;

        set n = (2 * i);

        reconsider n as even Element of NAT by ORDINAL1:def 12;

        take n;

        

         A3: 1 <= i by A1, FINSEQ_3: 25;

        then 1 <= (i + i) by NAT_1: 12;

        hence 1 <= n;

        

         A4: i <= ( len es) by A1, FINSEQ_3: 25;

        then (i * 2) <= (( len es) * 2) by XREAL_1: 64;

        then n <= ((( len es) * 2) + 1) by NAT_1: 12;

        hence n <= ( len W) by Def15;

        thus (W . n) = e by A2, A3, A4, Def15;

      end;

      assume ex n be even Element of NAT st 1 <= n & n <= ( len W) & (W . n) = e;

      then

      consider n be even Element of NAT such that

       A5: 1 <= n and

       A6: n <= ( len W) and

       A7: (W . n) = e;

      set i = (n div 2);

      2 divides n by PEPIN: 22;

      then

       A8: (2 * i) = n by NAT_D: 3;

      reconsider i as Element of NAT ;

      1 < n by A5, JORDAN12: 2, XXREAL_0: 1;

      then (1 + 1) < (n + 1) by XREAL_1: 8;

      then (2 * 1) <= (2 * i) by A8, NAT_1: 13;

      then

       A9: 1 <= i by XREAL_1: 68;

      n < ( len W) by A6, XXREAL_0: 1;

      then (2 * i) < ((2 * ( len es)) + 1) by A8, Def15;

      then (2 * i) <= (2 * ( len es)) by NAT_1: 13;

      then

       A10: i <= ( len es) by XREAL_1: 68;

      then

       A11: i in ( dom es) by A9, FINSEQ_3: 25;

      (es . i) = e by A7, A8, A9, A10, Def15;

      hence thesis by A11, FUNCT_1:def 3;

    end;

    

     Lm47: for G be _Graph, W be Walk of G, e be set holds e in (W .edges() ) implies ex v1,v2 be Vertex of G, n be odd Element of NAT st (n + 2) <= ( len W) & v1 = (W . n) & e = (W . (n + 1)) & v2 = (W . (n + 2)) & e Joins (v1,v2,G)

    proof

      let G be _Graph, W be Walk of G, e be set;

      reconsider lenW = ( len W) as odd Element of NAT ;

      assume e in (W .edges() );

      then

      consider n1 be even Element of NAT such that

       A1: 1 <= n1 and

       A2: n1 <= ( len W) and

       A3: (W . n1) = e by Lm46;

      reconsider n = (n1 - 1) as odd Element of NAT by A1, INT_1: 5;

      set v1 = (W . n), v2 = (W . (n + 2));

      (n1 - 1) <= (( len W) - 0 ) by A2, XREAL_1: 13;

      then

      reconsider v1 as Vertex of G by Lm1;

      n1 < lenW by A2, XXREAL_0: 1;

      then

       A4: ((n + 1) + 1) <= ( len W) by NAT_1: 13;

      then

      reconsider v2 as Vertex of G by Lm1;

      take v1, v2, n;

      thus (n + 2) <= ( len W) by A4;

      thus v1 = (W . n) & e = (W . (n + 1)) & v2 = (W . (n + 2)) by A3;

      ((n + 1) - 1) < (( len W) - 0 ) by A2, XREAL_1: 15;

      hence thesis by A3, Def3;

    end;

    

     Lm48: for G be _Graph, W be Walk of G, e,x,y be object holds e in (W .edges() ) & e Joins (x,y,G) implies x in (W .vertices() ) & y in (W .vertices() )

    proof

      let G be _Graph, W be Walk of G, e,x,y be object;

      assume that

       A1: e in (W .edges() ) and

       A2: e Joins (x,y,G);

      consider v1,v2 be Vertex of G, n be odd Element of NAT such that

       A3: (n + 2) <= ( len W) and

       A4: v1 = (W . n) and e = (W . (n + 1)) and

       A5: v2 = (W . (n + 2)) and

       A6: e Joins (v1,v2,G) by A1, Lm47;

      ((n + 2) - 2) <= (( len W) - 0 ) by A3, XREAL_1: 13;

      then

       A7: v1 in (W .vertices() ) by A4, Lm45;

      v2 in (W .vertices() ) by A3, A5, Lm45;

      hence thesis by A2, A6, A7, GLIB_000: 15;

    end;

    

     Lm49: for G be _Graph, W be Walk of G, n be odd Element of NAT st n <= ( len W) holds (W .find n) <= n

    proof

      let G be _Graph, W be Walk of G, n be odd Element of NAT ;

      assume

       A1: n <= ( len W);

      then for k be odd Element of NAT st k <= ( len W) & (W . k) = (W . n) holds (W .find n) <= k by Def20;

      hence thesis by A1;

    end;

    

     Lm50: for G be _Graph, W be Walk of G, n be odd Element of NAT st n <= ( len W) holds (W .rfind n) >= n

    proof

      let G be _Graph, W be Walk of G, n be odd Element of NAT ;

      assume

       A1: n <= ( len W);

      then for k be odd Element of NAT st k <= ( len W) & (W . k) = (W . n) holds k <= (W .rfind n) by Def22;

      hence thesis by A1;

    end;

    

     Lm51: for G be _Graph, W be Walk of G holds W is directed iff for n be odd Element of NAT st n < ( len W) holds (W . (n + 1)) DJoins ((W . n),(W . (n + 2)),G)

    proof

      let G be _Graph, W be Walk of G;

      hereby

        assume

         A1: W is directed;

        let n be odd Element of NAT ;

        assume

         A2: n < ( len W);

        then

         A3: (W . n) = (( the_Source_of G) . (W . (n + 1))) by A1;

         A4:

        now

          assume

           A5: (W . (n + 1)) DJoins ((W . (n + 2)),(W . n),G);

          then (W . (n + 2)) = (W . n) by A3, GLIB_000:def 14;

          hence (W . (n + 1)) DJoins ((W . n),(W . (n + 2)),G) by A5;

        end;

        (W . (n + 1)) Joins ((W . n),(W . (n + 2)),G) by A2, Def3;

        hence (W . (n + 1)) DJoins ((W . n),(W . (n + 2)),G) by A4, GLIB_000: 16;

      end;

      assume

       A6: for n be odd Element of NAT st n < ( len W) holds (W . (n + 1)) DJoins ((W . n),(W . (n + 2)),G);

      now

        let n be odd Element of NAT ;

        assume n < ( len W);

        then (W . (n + 1)) DJoins ((W . n),(W . (n + 2)),G) by A6;

        hence (( the_Source_of G) . (W . (n + 1))) = (W . n) by GLIB_000:def 14;

      end;

      hence thesis;

    end;

    

     Lm52: for G be _Graph, W be Walk of G, x,e,y,z be set holds W is directed & W is_Walk_from (x,y) & e DJoins (y,z,G) implies (W .addEdge e) is directed & (W .addEdge e) is_Walk_from (x,z)

    proof

      let G be _Graph, W be Walk of G, x,e,y,z be set;

      set W2 = (W .addEdge e);

      assume that

       A1: W is directed and

       A2: W is_Walk_from (x,y) and

       A3: e DJoins (y,z,G);

      

       A4: (W .last() ) = y by A2;

      then

       A5: e Joins ((W .last() ),z,G) by A3, GLIB_000: 16;

      then

       A6: ( len W2) = (( len W) + 2) by Lm37;

      

       A7: (W2 . (( len W) + 1)) = e by A5, Lm38;

      1 <= ( len W) by ABIAN: 12;

      then ( len W) in ( dom W) by FINSEQ_3: 25;

      then

       A8: (W2 . ( len W)) = y by A4, A5, Lm38;

      now

        let n be odd Element of NAT ;

        assume n < ( len W2);

        then n < ((( len W) + 1) + 1) by A6;

        then n <= (( len W) + 1) by NAT_1: 13;

        then n < (( len W) + 1) by XXREAL_0: 1;

        then

         A9: n <= ( len W) by NAT_1: 13;

        now

          per cases ;

            suppose n = ( len W);

            hence (W2 . n) = (( the_Source_of G) . (W2 . (n + 1))) by A3, A8, A7, GLIB_000:def 14;

          end;

            suppose

             A10: n <> ( len W);

            

             A11: 1 <= (n + 1) by NAT_1: 12;

            1 <= n by ABIAN: 12;

            then n in ( dom W) by A9, FINSEQ_3: 25;

            then

             A12: (W2 . n) = (W . n) by A5, Lm38;

            

             A13: n < ( len W) by A9, A10, XXREAL_0: 1;

            then (n + 1) <= ( len W) by NAT_1: 13;

            then (n + 1) in ( dom W) by A11, FINSEQ_3: 25;

            then (W2 . (n + 1)) = (W . (n + 1)) by A5, Lm38;

            hence (W2 . n) = (( the_Source_of G) . (W2 . (n + 1))) by A1, A13, A12;

          end;

        end;

        hence (W2 . n) = (( the_Source_of G) . (W2 . (n + 1)));

      end;

      hence (W .addEdge e) is directed;

      thus thesis by A2, A5, Lm39;

    end;

    

     Lm53: for G be _Graph, W be Walk of G, m,n be Element of NAT holds W is directed implies (W .cut (m,n)) is directed

    proof

      let G be _Graph, W be Walk of G, m,n be Element of NAT ;

      set W2 = (W .cut (m,n));

      assume

       A1: W is directed;

      now

        per cases ;

          suppose

           A2: m is odd & n is odd & m <= n & n <= ( len W);

          then

          reconsider m9 = m as odd Element of NAT ;

          now

            let x be odd Element of NAT ;

            reconsider xaa1 = (x - 1) as even Element of NAT by ABIAN: 12, INT_1: 5;

            assume

             A3: x < ( len W2);

            then (x + 1) <= ( len W2) by NAT_1: 13;

            then

             A4: (x + 1) < ( len W2) by XXREAL_0: 1;

            (m + x) in ( dom W) by A2, A3, Lm15;

            then (m9 + x) <= ( len W) by FINSEQ_3: 25;

            then

             A5: ((m9 + x) - 1) < (( len W) - 0 ) by XREAL_1: 15;

            xaa1 < (( len W2) - 0 ) by A3, XREAL_1: 14;

            then

             A6: (W2 . (xaa1 + 1)) = (W . (m + xaa1)) by A2, Lm15;

            

             A7: (W2 . (x + 2)) = (W2 . ((x + 1) + 1))

            .= (W . (m + (((x - 1) + 1) + 1))) by A2, A4, Lm15

            .= (W . ((m + xaa1) + 2));

            (W2 . (x + 1)) = (W . (((m + x) - 1) + 1)) by A2, A3, Lm15

            .= (W . ((m + xaa1) + 1));

            hence (W2 . (x + 1)) DJoins ((W2 . x),(W2 . (x + 2)),G) by A1, A6, A5, A7, Lm51;

          end;

          hence thesis by Lm51;

        end;

          suppose not (m is odd & n is odd & m <= n & n <= ( len W));

          hence thesis by A1, Def11;

        end;

      end;

      hence thesis;

    end;

    

     Lm54: for G be _Graph, W be Walk of G holds W is non trivial iff 3 <= ( len W)

    proof

      let G be _Graph, W be Walk of G;

      hereby

        assume W is non trivial;

        then (W .length() ) <> 0 ;

        then ( 0 + 1) <= ( len (W .edgeSeq() )) by NAT_1: 13;

        then (2 * 1) <= (2 * ( len (W .edgeSeq() ))) by NAT_1: 4;

        then (2 + 1) <= ((2 * ( len (W .edgeSeq() ))) + 1) by XREAL_1: 7;

        hence 3 <= ( len W) by Def15;

      end;

      assume 3 <= ( len W);

      then ((2 * 1) + 1) <= ((2 * ( len (W .edgeSeq() ))) + 1) by Def15;

      then (W .length() ) <> 0 ;

      hence thesis;

    end;

    

     Lm55: for G be _Graph, W be Walk of G holds W is non trivial iff ( len W) <> 1

    proof

      let G be _Graph, W be Walk of G;

      

       A1: 1 <= ( len W) by ABIAN: 12;

      thus W is non trivial implies ( len W) <> 1 by Lm54;

      assume ( len W) <> 1;

      then 1 < ( len W) by A1, XXREAL_0: 1;

      then (1 + 1) <= ( len W) by NAT_1: 13;

      then (2 * 1) < ( len W) by XXREAL_0: 1;

      then ((2 * 1) + 1) <= ( len W) by NAT_1: 13;

      hence thesis by Lm54;

    end;

    

     Lm56: for G be _Graph, W be Walk of G holds W is trivial iff ex v be Vertex of G st W = (G .walkOf v)

    proof

      let G be _Graph, W be Walk of G;

      hereby

        assume

         A1: W is trivial;

        take v = (W .first() );

        ( len W) = 1 by A1, Lm55;

        hence W = (G .walkOf v) by FINSEQ_1: 40;

      end;

      given v be Vertex of G such that

       A2: W = (G .walkOf v);

      ( len W) = 1 by A2, FINSEQ_1: 39;

      hence thesis by Lm55;

    end;

    

     Lm57: for G be _Graph, W be Walk of G holds W is Trail-like iff for m,n be even Element of NAT st 1 <= m & m < n & n <= ( len W) holds (W . m) <> (W . n)

    proof

      let G be _Graph, W be Walk of G;

      hereby

        assume W is Trail-like;

        then

         A1: (W .edgeSeq() ) is one-to-one;

        let m,n be even Element of NAT ;

        assume that

         A2: 1 <= m and

         A3: m < n and

         A4: n <= ( len W);

        

         A5: 1 <= n by A2, A3, XXREAL_0: 2;

        then

         A6: (n div 2) in ( dom (W .edgeSeq() )) by A4, Lm40;

        

         A7: m <= ( len W) by A3, A4, XXREAL_0: 2;

        then

         A8: (W . m) = ((W .edgeSeq() ) . (m div 2)) by A2, Lm40;

         A9:

        now

          2 divides m by PEPIN: 22;

          then

           A10: (2 * (m div 2)) = m by NAT_D: 3;

          

           A11: 2 divides n by PEPIN: 22;

          assume (m div 2) = (n div 2);

          hence contradiction by A3, A11, A10, NAT_D: 3;

        end;

        

         A12: (W . n) = ((W .edgeSeq() ) . (n div 2)) by A4, A5, Lm40;

        (m div 2) in ( dom (W .edgeSeq() )) by A2, A7, Lm40;

        hence (W . m) <> (W . n) by A1, A8, A6, A12, A9, FUNCT_1:def 4;

      end;

      assume

       A13: for m,n be even Element of NAT st 1 <= m & m < n & n <= ( len W) holds (W . m) <> (W . n);

      now

        let x1,x2 be object;

        assume that

         A14: x1 in ( dom (W .edgeSeq() )) and

         A15: x2 in ( dom (W .edgeSeq() )) and

         A16: ((W .edgeSeq() ) . x1) = ((W .edgeSeq() ) . x2);

        reconsider m = x1, n = x2 as Element of NAT by A14, A15;

        

         A17: m <= ( len (W .edgeSeq() )) by A14, FINSEQ_3: 25;

        1 <= m by A14, FINSEQ_3: 25;

        then

         A18: ((W .edgeSeq() ) . x1) = (W . (2 * m)) by A17, Def15;

        

         A19: n <= ( len (W .edgeSeq() )) by A15, FINSEQ_3: 25;

        1 <= n by A15, FINSEQ_3: 25;

        then

         A20: (W . (2 * m)) = (W . (2 * n)) by A16, A18, A19, Def15;

        

         A21: (2 * n) in ( dom W) by A15, Lm41;

        then

         A22: 1 <= (2 * n) by FINSEQ_3: 25;

        

         A23: (2 * m) in ( dom W) by A14, Lm41;

        then

         A24: (2 * m) <= ( len W) by FINSEQ_3: 25;

        

         A25: (2 * n) <= ( len W) by A21, FINSEQ_3: 25;

        

         A26: 1 <= (2 * m) by A23, FINSEQ_3: 25;

        now

          per cases by XXREAL_0: 1;

            suppose (2 * m) < (2 * n);

            hence x1 = x2 by A13, A20, A26, A25;

          end;

            suppose (2 * m) = (2 * n);

            hence x1 = x2;

          end;

            suppose (2 * m) > (2 * n);

            hence x1 = x2 by A13, A20, A24, A22;

          end;

        end;

        hence x1 = x2;

      end;

      then (W .edgeSeq() ) is one-to-one by FUNCT_1:def 4;

      hence thesis;

    end;

    

     Lm58: for G be _Graph, W be Walk of G holds W is Trail-like iff (W .reverse() ) is Trail-like

    proof

      let G be _Graph, W be Walk of G;

       A1:

      now

        let W be Walk of G;

        assume

         A2: W is Trail-like;

        now

          reconsider lenW = ( len W) as odd Element of NAT ;

          let m,n be even Element of NAT ;

          assume that

           A3: 1 <= m and

           A4: m < n and

           A5: n <= ( len (W .reverse() ));

          (( len W) - n) < (( len W) - m) by A4, XREAL_1: 15;

          then

           A6: ((( len W) - n) + 1) < ((( len W) - m) + 1) by XREAL_1: 8;

          m <= ( len (W .reverse() )) by A4, A5, XXREAL_0: 2;

          then

           A7: m in ( dom (W .reverse() )) by A3, FINSEQ_3: 25;

          then

           A8: ((( len W) - m) + 1) in ( dom W) by Lm8;

          then

          reconsider rm = ((lenW - m) + 1) as even Element of NAT ;

          

           A9: rm <= ( len W) by A8, FINSEQ_3: 25;

          1 <= n by A3, A4, XXREAL_0: 2;

          then

           A10: n in ( dom (W .reverse() )) by A5, FINSEQ_3: 25;

          then

           A11: ((W .reverse() ) . n) = (W . ((( len W) - n) + 1)) by Lm8;

          

           A12: ((( len W) - n) + 1) in ( dom W) by A10, Lm8;

          then

          reconsider rn = ((lenW - n) + 1) as even Element of NAT ;

          

           A13: 1 <= rn by A12, FINSEQ_3: 25;

          ((W .reverse() ) . m) = (W . ((( len W) - m) + 1)) by A7, Lm8;

          hence ((W .reverse() ) . m) <> ((W .reverse() ) . n) by A2, A11, A6, A13, A9, Lm57;

        end;

        hence (W .reverse() ) is Trail-like by Lm57;

      end;

      hence W is Trail-like implies (W .reverse() ) is Trail-like;

      assume (W .reverse() ) is Trail-like;

      then ((W .reverse() ) .reverse() ) is Trail-like by A1;

      hence thesis;

    end;

    

     Lm59: for G be _Graph, W be Walk of G, m,n be Element of NAT holds W is Trail-like implies (W .cut (m,n)) is Trail-like

    proof

      let G be _Graph, W be Walk of G, m,n be Element of NAT ;

      assume

       A1: W is Trail-like;

      now

        per cases ;

          suppose

           A2: m is odd & n is odd & m <= n & n <= ( len W);

          now

            reconsider m9 = m as odd Element of NAT by A2;

            let x,y be even Element of NAT ;

            assume that

             A3: 1 <= x and

             A4: x < y and

             A5: y <= ( len (W .cut (m,n)));

            reconsider xaa1 = (x - 1) as odd Element of NAT by A3, INT_1: 5;

            reconsider yaa1 = (y - 1) as odd Element of NAT by A3, A4, INT_1: 5, XXREAL_0: 2;

            (x - 1) < (y - 1) by A4, XREAL_1: 14;

            then

             A6: (xaa1 + m) < (yaa1 + m) by XREAL_1: 8;

            x <= ( len (W .cut (m,n))) by A4, A5, XXREAL_0: 2;

            then (x - 1) < (( len (W .cut (m,n))) - 0 ) by XREAL_1: 15;

            then

             A7: ((W .cut (m,n)) . (xaa1 + 1)) = (W . (m + xaa1)) by A2, Lm15;

            

             A8: (y - 1) < (( len (W .cut (m,n))) - 0 ) by A5, XREAL_1: 15;

            then

             A9: ((W .cut (m,n)) . (yaa1 + 1)) = (W . (m + yaa1)) by A2, Lm15;

            (m + yaa1) in ( dom W) by A2, A8, Lm15;

            then

             A10: (m + yaa1) <= ( len W) by FINSEQ_3: 25;

            1 <= (m + xaa1) by ABIAN: 12, NAT_1: 12;

            then (W . (m9 + xaa1)) <> (W . (m9 + yaa1)) by A1, A10, A6, Lm57;

            hence ((W .cut (m,n)) . x) <> ((W .cut (m,n)) . y) by A7, A9;

          end;

          hence thesis by Lm57;

        end;

          suppose not (m is odd & n is odd & m <= n & n <= ( len W));

          hence thesis by A1, Def11;

        end;

      end;

      hence thesis;

    end;

    

     Lm60: for G be _Graph, W be Walk of G, e be set st W is Trail-like & e in ((W .last() ) .edgesInOut() ) & not e in (W .edges() ) holds (W .addEdge e) is Trail-like

    proof

      let G be _Graph, W be Walk of G, e be set;

      assume that

       A1: W is Trail-like and

       A2: e in ((W .last() ) .edgesInOut() ) and

       A3: not e in (W .edges() );

      set W2 = (W .addEdge e);

      reconsider lenW2 = ( len W2) as odd Element of NAT ;

      

       A4: e Joins ((W .last() ),((W .last() ) .adj e),G) by A2, GLIB_000: 67;

      now

        let m,n be even Element of NAT ;

        assume that

         A5: 1 <= m and

         A6: m < n and

         A7: n <= ( len W2);

        now

          per cases ;

            suppose

             A8: n <= ( len W);

            then m <= ( len W) by A6, XXREAL_0: 2;

            then m in ( dom W) by A5, FINSEQ_3: 25;

            then

             A9: (W2 . m) = (W . m) by A4, Lm38;

            1 <= n by A5, A6, XXREAL_0: 2;

            then n in ( dom W) by A8, FINSEQ_3: 25;

            then (W2 . n) = (W . n) by A4, Lm38;

            hence (W2 . m) <> (W2 . n) by A1, A5, A6, A8, A9, Lm57;

          end;

            suppose

             A10: n > ( len W);

            n < lenW2 by A7, XXREAL_0: 1;

            then (n + 1) <= ( len W2) by NAT_1: 13;

            then ((n + 1) - 1) <= (( len W2) - 1) by XREAL_1: 13;

            then

             A11: n <= ((( len W) + (1 + 1)) - 1) by A4, Lm37;

            (( len W) + 1) <= n by A10, NAT_1: 13;

            then

             A12: n = (( len W) + 1) by A11, XXREAL_0: 1;

            then

             A13: (W2 . n) = e by A4, Lm38;

            

             A14: ((m + 1) - 1) <= ((( len W) + 1) - 1) by A6, A12, NAT_1: 13;

            then m in ( dom W) by A5, FINSEQ_3: 25;

            then (W2 . m) = (W . m) by A4, Lm38;

            hence (W2 . m) <> (W2 . n) by A3, A5, A13, A14, Lm46;

          end;

        end;

        hence (W2 . m) <> (W2 . n);

      end;

      hence thesis by Lm57;

    end;

    

     Lm61: for G be _Graph, W be Walk of G holds ( len W) <= 3 implies W is Trail-like

    proof

      let G be _Graph, W be Walk of G;

      assume

       A1: ( len W) <= 3;

      now

        per cases ;

          suppose ( len W) = 1;

          then W is trivial by Lm55;

          then ex v be Vertex of G st W = (G .walkOf v) by Lm56;

          hence thesis by Lm4;

        end;

          suppose

           A2: ( len W) <> 1;

          1 <= ( len W) by ABIAN: 12;

          then 1 < ( len W) by A2, XXREAL_0: 1;

          then (1 + 2) <= ( len W) by Th1, JORDAN12: 2;

          then

           A3: ( len W) = 3 by A1, XXREAL_0: 1;

          now

            let m,n be even Element of NAT such that

             A4: 1 <= m and

             A5: m < n and

             A6: n <= ( len W);

            ((2 * 0 ) + 1) < m by A4, XXREAL_0: 1;

            then

             A7: (1 + 1) <= m by NAT_1: 13;

            n < (2 + 1) by A3, A6, XXREAL_0: 1;

            then n <= 2 by NAT_1: 13;

            hence (W . m) <> (W . n) by A5, A7, XXREAL_0: 2;

          end;

          hence thesis by Lm57;

        end;

      end;

      hence thesis;

    end;

    

     Lm62: for G be _Graph, x,e,y be object holds e Joins (x,y,G) implies (G .walkOf (x,e,y)) is Path-like

    proof

      let G be _Graph, x,e,y be object;

      set W = (G .walkOf (x,e,y));

      assume

       A1: e Joins (x,y,G);

      then

       A2: ( len W) = 3 by Lm5;

       A3:

      now

        let m,n be odd Element of NAT ;

        assume that

         A4: m < n and

         A5: n <= ( len W);

        assume (W . m) = (W . n);

        

         A6: 1 <= m by ABIAN: 12;

        then 1 < n by A4, XXREAL_0: 2;

        then (1 + 1) < (n + 1) by XREAL_1: 8;

        then (2 * 1) <= n by NAT_1: 13;

        then (2 * 1) < n by XXREAL_0: 1;

        then (2 + 1) < (n + 1) by XREAL_1: 8;

        then

         A7: 3 <= n by NAT_1: 13;

        then

         A8: n = 3 by A2, A5, XXREAL_0: 1;

        now

          assume m <> 1;

          then 1 < m by A6, XXREAL_0: 1;

          then (1 + 1) < (m + 1) by XREAL_1: 8;

          then (2 * 1) <= m by NAT_1: 13;

          then (2 * 1) < m by XXREAL_0: 1;

          then (2 + 1) < (m + 1) by XREAL_1: 8;

          hence contradiction by A4, A8, NAT_1: 13;

        end;

        hence m = 1 & n = ( len W) by A2, A5, A7, XXREAL_0: 1;

      end;

      now

        let m,n be even Element of NAT ;

        assume that

         A9: 1 <= m and

         A10: m < n and

         A11: n <= ( len W);

        1 < m by A9, JORDAN12: 2, XXREAL_0: 1;

        then (1 + 1) <= m by NAT_1: 13;

        then

         A12: 2 < n by A10, XXREAL_0: 2;

        n <= 3 by A1, A11, Lm5;

        then n < ((2 * 1) + 1) by XXREAL_0: 1;

        hence (W . m) <> (W . n) by A12, NAT_1: 13;

      end;

      then W is Trail-like by Lm57;

      hence thesis by A3;

    end;

    

     Lm63: for G be _Graph, W be Walk of G holds W is Path-like iff (W .reverse() ) is Path-like

    proof

      let G be _Graph, W be Walk of G;

       A1:

      now

        let W be Walk of G;

        reconsider lenW = ( len W) as odd Element of NAT ;

        assume

         A2: W is Path-like;

         A3:

        now

          let m,n be odd Element of NAT ;

          assume that

           A4: m < n and

           A5: n <= ( len (W .reverse() )) and

           A6: ((W .reverse() ) . m) = ((W .reverse() ) . n);

          

           A7: 1 <= m by ABIAN: 12;

          m <= ( len (W .reverse() )) by A4, A5, XXREAL_0: 2;

          then

           A8: m in ( dom (W .reverse() )) by A7, FINSEQ_3: 25;

          then

           A9: ((( len W) - m) + 1) in ( dom W) by Lm8;

          then

          reconsider rm = ((lenW - m) + 1) as odd Element of NAT ;

          1 <= n by ABIAN: 12;

          then

           A10: n in ( dom (W .reverse() )) by A5, FINSEQ_3: 25;

          then ((( len W) - n) + 1) in ( dom W) by Lm8;

          then

          reconsider rn = ((lenW - n) + 1) as odd Element of NAT ;

          (lenW - n) < (( len W) - m) by A4, XREAL_1: 15;

          then

           A11: rn < rm by XREAL_1: 8;

          ((W .reverse() ) . n) = (W . ((( len W) - n) + 1)) by A10, Lm8;

          then

           A12: (W . rm) = (W . rn) by A6, A8, Lm8;

          

           A13: rm <= ( len W) by A9, FINSEQ_3: 25;

          then (( len W) + (1 + ( - m))) = ( len W) by A2, A11, A12;

          hence m = 1;

          rn = 1 by A2, A11, A13, A12;

          hence n = ( len (W .reverse() )) by FINSEQ_5:def 3;

        end;

        W is Trail-like by A2;

        then (W .reverse() ) is Trail-like by Lm58;

        hence (W .reverse() ) is Path-like by A3;

      end;

      hence W is Path-like implies (W .reverse() ) is Path-like;

      assume (W .reverse() ) is Path-like;

      then ((W .reverse() ) .reverse() ) is Path-like by A1;

      hence thesis;

    end;

    

     Lm64: for G be _Graph, W be Walk of G, m,n be Element of NAT st W is Path-like holds (W .cut (m,n)) is Path-like

    proof

      let G be _Graph, W be Walk of G, m,n be Element of NAT ;

      assume

       A1: W is Path-like;

      now

        per cases ;

          suppose

           A2: m is odd & n is odd & m <= n & n <= ( len W);

          then

          reconsider m9 = m as odd Element of NAT ;

          now

            W is Trail-like by A1;

            hence (W .cut (m,n)) is Trail-like by Lm59;

            let x,y be odd Element of NAT ;

            assume that

             A3: x < y and

             A4: y <= ( len (W .cut (m,n))) and

             A5: ((W .cut (m,n)) . x) = ((W .cut (m,n)) . y);

            reconsider xaa1 = (x - 1) as even Element of NAT by ABIAN: 12, INT_1: 5;

            reconsider yaa1 = (y - 1) as even Element of NAT by ABIAN: 12, INT_1: 5;

            (x - 1) < (y - 1) by A3, XREAL_1: 14;

            then

             A6: (xaa1 + m) < (yaa1 + m) by XREAL_1: 8;

            x <= ( len (W .cut (m,n))) by A3, A4, XXREAL_0: 2;

            then (x - 1) < (( len (W .cut (m,n))) - 0 ) by XREAL_1: 15;

            then

             A7: ((W .cut (m,n)) . (xaa1 + 1)) = (W . (m + xaa1)) by A2, Lm15;

            

             A8: (y - 1) < (( len (W .cut (m,n))) - 0 ) by A4, XREAL_1: 15;

            then

             A9: ((W .cut (m,n)) . (yaa1 + 1)) = (W . (m + yaa1)) by A2, Lm15;

            (m + yaa1) in ( dom W) by A2, A8, Lm15;

            then

             A10: (m9 + yaa1) <= ( len W) by FINSEQ_3: 25;

            then

             A11: (m9 + yaa1) = ( len W) by A1, A5, A7, A9, A6;

             A12:

            now

              assume

               A13: xaa1 <> 0 ;

              m >= 1 by A2, ABIAN: 12;

              then (1 + 0 ) < (m + xaa1) by A13, XREAL_1: 8;

              hence contradiction by A1, A5, A7, A9, A6, A10;

            end;

            then ((m + 1) - 1) = 1 by A1, A5, A7, A9, A6, A10;

            then

             A14: (( len (W .cut (m,n))) + 1) = (n + 1) by A2, Lm15;

            thus x = 1 by A12;

            (m9 + xaa1) = 1 by A1, A5, A7, A9, A6, A10;

            hence y = ( len (W .cut (m,n))) by A2, A4, A11, A12, A14, XXREAL_0: 1;

          end;

          hence thesis;

        end;

          suppose not (m is odd & n is odd & m <= n & n <= ( len W));

          hence thesis by A1, Def11;

        end;

      end;

      hence thesis;

    end;

    

     Lm65: for G be _Graph, W be Walk of G, e,v be object st W is Path-like & e Joins ((W .last() ),v,G) & not e in (W .edges() ) & (W is trivial or W is open) & for n be odd Element of NAT st 1 < n & n <= ( len W) holds (W . n) <> v holds (W .addEdge e) is Path-like

    proof

      let G be _Graph, W be Walk of G, e,v be object;

      assume that

       A1: W is Path-like and

       A2: e Joins ((W .last() ),v,G) and

       A3: not e in (W .edges() ) and

       A4: W is trivial or W is open and

       A5: for n be odd Element of NAT st 1 < n & n <= ( len W) holds (W . n) <> v;

      reconsider lenW = ( len W) as odd Element of NAT ;

      set W2 = (W .addEdge e);

      

       A6: e in ((W .last() ) .edgesInOut() ) by A2, GLIB_000: 62;

      now

        W is Trail-like by A1;

        hence W2 is Trail-like by A3, A6, Lm60;

        let m,n be odd Element of NAT ;

        assume that

         A7: m < n and

         A8: n <= ( len W2) and

         A9: (W2 . m) = (W2 . n);

        now

          per cases by A4;

            suppose

             A10: W is open;

            now

              per cases ;

                suppose

                 A11: n <= ( len W);

                

                 A12: 1 <= m by ABIAN: 12;

                m <= ( len W) by A7, A11, XXREAL_0: 2;

                then m in ( dom W) by A12, FINSEQ_3: 25;

                then

                 A13: (W2 . m) = (W . m) by A2, Lm38;

                1 <= n by ABIAN: 12;

                then n in ( dom W) by A11, FINSEQ_3: 25;

                then

                 A14: (W . m) = (W . n) by A2, A9, A13, Lm38;

                then m = 1 by A1, A7, A11;

                then (W .first() ) = (W .last() ) by A1, A7, A11, A14;

                hence m = 1 & n = ( len W2) by A10;

              end;

                suppose n > ( len W);

                then (lenW + 1) <= n by NAT_1: 13;

                then (lenW + 1) < n by XXREAL_0: 1;

                then ((lenW + 1) + 1) <= n by NAT_1: 13;

                then (( len W) + (1 + 1)) <= n;

                then

                 A15: ( len W2) <= n by A2, Lm37;

                then n = ( len W2) by A8, XXREAL_0: 1;

                then (W2 . n) = (W2 . (( len W) + 2)) by A2, Lm37;

                then

                 A16: (W2 . n) = v by A2, Lm38;

                m < ( len W2) by A7, A8, A15, XXREAL_0: 1;

                then m < (( len W) + (1 + 1)) by A2, Lm37;

                then m < ((( len W) + 1) + 1);

                then m <= (lenW + 1) by NAT_1: 13;

                then m < (lenW + 1) by XXREAL_0: 1;

                then

                 A17: m <= ( len W) by NAT_1: 13;

                1 <= m by ABIAN: 12;

                then m in ( dom W) by A17, FINSEQ_3: 25;

                then

                 A18: (W . m) = v by A2, A9, A16, Lm38;

                now

                  

                   A19: 1 <= m by ABIAN: 12;

                  assume m <> 1;

                  then 1 < m by A19, XXREAL_0: 1;

                  hence contradiction by A5, A17, A18;

                end;

                hence m = 1;

                thus n = ( len W2) by A8, A15, XXREAL_0: 1;

              end;

            end;

            hence m = 1 & n = ( len W2);

          end;

            suppose W is trivial;

            then ex v be Vertex of G st W = (G .walkOf v) by Lm56;

            then ( len W) = 1 by FINSEQ_1: 39;

            then

             A20: ( len W2) = (1 + 2) by A2, Lm37;

            

             A21: (m + 1) <= n by A7, NAT_1: 13;

            

             A22: 1 <= m by ABIAN: 12;

            then (1 + 1) <= (m + 1) by XREAL_1: 7;

            then (2 * 1) <= n by A21, XXREAL_0: 2;

            then (2 * 1) < n by XXREAL_0: 1;

            then

             A23: ( len W2) <= n by A20, NAT_1: 13;

            then n = ( len W2) by A8, XXREAL_0: 1;

            then ((m + 1) - 1) <= (3 - 1) by A7, A20, NAT_1: 13;

            then m < (2 * 1) by XXREAL_0: 1;

            then (m + 1) <= 2 by NAT_1: 13;

            then ((m + 1) - 1) <= (2 - 1) by XREAL_1: 13;

            hence m = 1 & n = ( len W2) by A8, A22, A23, XXREAL_0: 1;

          end;

        end;

        hence m = 1 & n = ( len W2);

      end;

      hence thesis;

    end;

    

     Lm66: for G be _Graph, W be Walk of G holds (for m,n be odd Element of NAT st m <= ( len W) & n <= ( len W) & (W . m) = (W . n) holds m = n) implies W is Path-like

    proof

      let G be _Graph, W be Walk of G;

      assume

       A1: for m,n be odd Element of NAT st m <= ( len W) & n <= ( len W) & (W . m) = (W . n) holds m = n;

      now

        let m,n be even Element of NAT ;

        assume that

         A2: 1 <= m and

         A3: m < n and

         A4: n <= ( len W);

        m <= ( len W) by A3, A4, XXREAL_0: 2;

        then

         A5: m in ( dom W) by A2, FINSEQ_3: 25;

        1 <= n by A2, A3, XXREAL_0: 2;

        then

         A6: n in ( dom W) by A4, FINSEQ_3: 25;

        now

          assume (W . m) = (W . n);

          then

          consider naa1 be odd Element of NAT such that

           A7: naa1 = (n - 1) and

           A8: (n - 1) in ( dom W) and

           A9: (n + 1) in ( dom W) and

           A10: (W . m) Joins ((W . naa1),(W . (n + 1)),G) by A6, Lm2;

          

           A11: naa1 <= ( len W) by A7, A8, FINSEQ_3: 25;

          consider maa1 be odd Element of NAT such that

           A12: maa1 = (m - 1) and

           A13: (m - 1) in ( dom W) and

           A14: (m + 1) in ( dom W) and

           A15: (W . m) Joins ((W . maa1),(W . (m + 1)),G) by A5, Lm2;

          

           A16: maa1 <= ( len W) by A12, A13, FINSEQ_3: 25;

          

           A17: (n + 1) <= ( len W) by A9, FINSEQ_3: 25;

          

           A18: (m + 1) <= ( len W) by A14, FINSEQ_3: 25;

          now

            per cases by A15, A10, GLIB_000: 15;

              suppose (W . naa1) = (W . maa1) & (W . (n + 1)) = (W . (m + 1));

              then naa1 = maa1 by A1, A16, A11;

              hence contradiction by A3, A12, A7;

            end;

              suppose

               A19: (W . naa1) = (W . (m + 1)) & (W . (n + 1)) = (W . maa1);

              then

               A20: (n + 1) = maa1 by A1, A16, A17;

              naa1 = (m + 1) by A1, A18, A11, A19;

              hence contradiction by A12, A7, A20;

            end;

          end;

          hence contradiction;

        end;

        hence (W . m) <> (W . n);

      end;

      then

       A21: W is Trail-like by Lm57;

      now

        let m,n be odd Element of NAT ;

        assume that

         A22: m < n and

         A23: n <= ( len W);

        assume

         A24: (W . m) = (W . n);

        m <= ( len W) by A22, A23, XXREAL_0: 2;

        hence m = 1 & n = ( len W) by A1, A22, A23, A24;

      end;

      hence thesis by A21;

    end;

    

     Lm67: for G be _Graph, W be Walk of G holds (for n be odd Element of NAT st n <= ( len W) holds (W .rfind n) = n) implies W is Path-like

    proof

      let G be _Graph, W be Walk of G;

      assume

       A1: for n be odd Element of NAT st n <= ( len W) holds (W .rfind n) = n;

      now

        let m,n be odd Element of NAT ;

        assume that

         A2: m <= ( len W) and

         A3: n <= ( len W) and

         A4: (W . m) = (W . n);

        (W .rfind n) = n by A1, A3;

        then

         A5: m <= n by A2, A3, A4, Def22;

        (W .rfind m) = m by A1, A2;

        then n <= m by A2, A3, A4, Def22;

        hence m = n by A5, XXREAL_0: 1;

      end;

      hence thesis by Lm66;

    end;

    

     Lm68: for G be _Graph, W be Walk of G, e,v be object st e Joins ((W .last() ),v,G) & W is Path-like & not v in (W .vertices() ) & (W is trivial or W is open) holds (W .addEdge e) is Path-like

    proof

      let G be _Graph, W be Walk of G, e,v be object;

      assume that

       A1: e Joins ((W .last() ),v,G) and

       A2: W is Path-like and

       A3: not v in (W .vertices() ) and

       A4: W is trivial or W is open;

      

       A5: for n be odd Element of NAT st 1 < n & n <= ( len W) holds v <> (W . n) by A3, Lm45;

       not e in (W .edges() ) by A1, A3, Lm48;

      hence thesis by A1, A2, A4, A5, Lm65;

    end;

    

     Lm69: for G be _Graph, W be Walk of G holds ( len W) <= 3 implies W is Path-like

    proof

      let G be _Graph, W be Walk of G;

      assume

       A1: ( len W) <= 3;

      now

        per cases ;

          suppose ( len W) = 1;

          then W is trivial by Lm55;

          then ex v be Vertex of G st W = (G .walkOf v) by Lm56;

          hence thesis by Lm4;

        end;

          suppose

           A2: ( len W) <> 1;

          1 <= ( len W) by ABIAN: 12;

          then 1 < ( len W) by A2, XXREAL_0: 1;

          then (1 + 2) <= ( len W) by Th1, JORDAN12: 2;

          then

           A3: ( len W) = 3 by A1, XXREAL_0: 1;

           A4:

          now

            let m,n be odd Element of NAT ;

            assume that

             A5: m < n and

             A6: n <= ( len W) and (W . m) = (W . n);

            

             A7: 1 <= m by ABIAN: 12;

            m < ((2 * 1) + 1) by A3, A5, A6, XXREAL_0: 2;

            then ((m + 2) - 2) <= (3 - 2) by Th1;

            hence m = 1 by A7, XXREAL_0: 1;

            ((2 * 0 ) + 1) < n by A5, A7, XXREAL_0: 2;

            then (1 + 2) <= n by Th1;

            hence n = ( len W) by A3, A6, XXREAL_0: 1;

          end;

          W is Trail-like by A1, Lm61;

          hence thesis by A4;

        end;

      end;

      hence thesis;

    end;

    registration

      let G be _Graph;

      cluster Path-like -> Trail-like for Walk of G;

      correctness ;

      cluster trivial -> Path-like for Walk of G;

      correctness

      proof

        let W be Walk of G;

        assume

         A1: W is trivial;

         A2:

        now

          let m,n be odd Element of NAT ;

          assume that

           A3: m < n and

           A4: n <= ( len W) and (W . m) = (W . n);

          

           A5: 1 <= m by ABIAN: 12;

          

           A6: 1 <= n by ABIAN: 12;

          n <= 1 by A1, A4, Lm55;

          hence m = 1 & n = ( len W) by A3, A5, A6, XXREAL_0: 1;

        end;

        ( len W) = 1 by A1, Lm55;

        then ((2 * ( len (W .edgeSeq() ))) + 1) = ( 0 + 1) by Def15;

        then (W .edgeSeq() ) = {} ;

        then W is Trail-like;

        hence thesis by A2;

      end;

      cluster trivial -> vertex-distinct for Walk of G;

      coherence

      proof

        let W be Walk of G;

        assume

         A7: W is trivial;

        now

          let m,n be odd Element of NAT ;

          assume that

           A8: m <= ( len W) and

           A9: n <= ( len W) and (W . m) = (W . n);

          

           A10: 1 <= m by ABIAN: 12;

          m <= 1 by A7, A8, Lm55;

          then

           A11: m = 1 by A10, XXREAL_0: 1;

          

           A12: 1 <= n by ABIAN: 12;

          n <= 1 by A7, A9, Lm55;

          hence m = n by A12, A11, XXREAL_0: 1;

        end;

        hence thesis;

      end;

      cluster vertex-distinct -> Path-like for Walk of G;

      coherence by Lm66;

      cluster Circuit-like -> closed Trail-like non trivial for Walk of G;

      correctness ;

      cluster Cycle-like -> closed Path-like non trivial for Walk of G;

      correctness ;

    end

    registration

      let G be _Graph;

      cluster closed directed trivial for Walk of G;

      existence

      proof

        set v = the Vertex of G;

        take (G .walkOf v);

        thus thesis by Lm4;

      end;

    end

    registration

      let G be _Graph;

      cluster vertex-distinct for Walk of G;

      existence

      proof

        set W = the trivial Walk of G;

        take W;

        thus thesis;

      end;

    end

    definition

      let G be _Graph;

      mode Trail of G is Trail-like Walk of G;

      mode Path of G is Path-like Walk of G;

    end

    definition

      let G be _Graph;

      mode DWalk of G is directed Walk of G;

      mode DTrail of G is directed Trail of G;

      mode DPath of G is directed Path of G;

    end

    registration

      let G be _Graph, v be Vertex of G;

      cluster (G .walkOf v) -> closed directed trivial;

      coherence by Lm4;

    end

    registration

      let G be _Graph, x,e,y be object;

      cluster (G .walkOf (x,e,y)) -> Path-like;

      coherence

      proof

        set W = (G .walkOf (x,e,y));

        now

          per cases ;

            suppose e Joins (x,y,G);

            hence thesis by Lm62;

          end;

            suppose not e Joins (x,y,G);

            then W = (G .walkOf the Element of ( the_Vertices_of G)) by Def5;

            hence thesis;

          end;

        end;

        hence thesis;

      end;

    end

    registration

      let G be _Graph, x,e be object;

      cluster (G .walkOf (x,e,x)) -> closed;

      coherence

      proof

        set W = (G .walkOf (x,e,x));

        now

          per cases ;

            suppose

             A1: e Joins (x,x,G);

            then

             A2: (W .last() ) = x by Lm6;

            (W .first() ) = x by A1, Lm6;

            hence thesis by A2;

          end;

            suppose not e Joins (x,x,G);

            then W = (G .walkOf the Element of ( the_Vertices_of G)) by Def5;

            hence thesis;

          end;

        end;

        hence thesis;

      end;

    end

    registration

      let G be _Graph, W be closed Walk of G;

      cluster (W .reverse() ) -> closed;

      coherence

      proof

        W is closed iff ((W .reverse() ) .last() ) = (W .last() ) by Lm7;

        then W is closed iff ((W .reverse() ) .last() ) = ((W .reverse() ) .first() ) by Lm7;

        hence thesis;

      end;

    end

    registration

      let G be _Graph, W be trivial Walk of G;

      cluster (W .reverse() ) -> trivial;

      coherence

      proof

        ( len W) = 1 by Lm55;

        then ( len (W .reverse() )) = 1 by FINSEQ_5:def 3;

        hence thesis by Lm55;

      end;

    end

    registration

      let G be _Graph, W be Trail of G;

      cluster (W .reverse() ) -> Trail-like;

      coherence by Lm58;

    end

    registration

      let G be _Graph, W be Path of G;

      cluster (W .reverse() ) -> Path-like;

      coherence by Lm63;

    end

    registration

      let G be _Graph, W1,W2 be closed Walk of G;

      cluster (W1 .append W2) -> closed;

      coherence

      proof

        set W = (W1 .append W2);

        now

          per cases ;

            suppose

             A1: (W1 .last() ) = (W2 .first() );

            then (W1 .last() ) = (W2 .last() ) by Def24;

            

            then (W1 .first() ) = (W2 .last() ) by Def24

            .= (W .last() ) by A1, Lm11;

            then (W .first() ) = (W .last() ) by A1, Lm11;

            hence thesis;

          end;

            suppose (W1 .last() ) <> (W2 .first() );

            hence thesis by Def10;

          end;

        end;

        hence thesis;

      end;

    end

    registration

      let G be _Graph, W1,W2 be DWalk of G;

      cluster (W1 .append W2) -> directed;

      coherence

      proof

        set W = (W1 .append W2);

        now

          per cases ;

            suppose

             A1: (W1 .last() ) = (W2 .first() );

            now

              let n be odd Element of NAT ;

              assume

               A2: n < ( len W);

              1 <= n by ABIAN: 12;

              then

               A3: n in ( dom W) by A2, FINSEQ_3: 25;

              now

                per cases by A3, Lm14;

                  suppose

                   A4: n in ( dom W1);

                  then

                   A5: n <= ( len W1) by FINSEQ_3: 25;

                  

                   A6: (W . n) = (W1 . n) by A4, Lm12;

                  now

                    per cases by A5, XXREAL_0: 1;

                      suppose

                       A7: n < ( len W1);

                      then (n + 2) in ( dom W1) by Lm3;

                      then

                       A8: (W . (n + 2)) = (W1 . (n + 2)) by Lm12;

                      (n + 1) in ( dom W1) by A7, Lm3;

                      then (W . (n + 1)) = (W1 . (n + 1)) by Lm12;

                      hence (W . (n + 1)) DJoins ((W . n),(W . (n + 2)),G) by A6, A7, A8, Lm51;

                    end;

                      suppose

                       A9: n = ( len W1);

                      (n + 1) < (( len W) + 1) by A2, XREAL_1: 8;

                      then (1 + n) < (( len W2) + n) by A1, A9, Lm9;

                      then

                       A10: 1 < ( len W2) by XREAL_1: 6;

                      then

                       A11: (W2 . (((2 * 0 ) + 1) + 1)) DJoins ((W2 . ((2 * 0 ) + 1)),(W2 . (((2 * 0 ) + 1) + 2)),G) by Lm51;

                      

                       A12: n = (( len W1) + 0 ) by A9;

                      

                       A13: 0 < ( len W2);

                      (1 + 1) <= ( len W2) by A10, NAT_1: 13;

                      then (2 * 1) < ( len W2) by XXREAL_0: 1;

                      then

                       A14: (W . (n + 2)) = (W2 . (2 + 1)) by A1, A9, Lm13;

                      (W . (n + 1)) = (W2 . (1 + 1)) by A1, A9, A10, Lm13;

                      hence (W . (n + 1)) DJoins ((W . n),(W . (n + 2)),G) by A1, A13, A12, A14, A11, Lm13;

                    end;

                  end;

                  hence (W . (n + 1)) DJoins ((W . n),(W . (n + 2)),G);

                end;

                  suppose ex k be Element of NAT st k < ( len W2) & n = (( len W1) + k);

                  then

                  consider k be Element of NAT such that

                   A15: k < ( len W2) and

                   A16: n = (( len W1) + k);

                  reconsider k as even Element of NAT by A16;

                  

                   A17: (W . n) = (W2 . (k + 1)) by A1, A15, A16, Lm13;

                  (n + 1) < (( len W) + 1) by A2, XREAL_1: 8;

                  then (1 + (k + ( len W1))) < (( len W2) + ( len W1)) by A1, A16, Lm9;

                  then

                   A18: (((k + 1) + ( len W1)) - ( len W1)) < ((( len W2) + ( len W1)) - ( len W1)) by XREAL_1: 14;

                  then ((k + 1) + 1) <= ( len W2) by NAT_1: 13;

                  then

                   A19: ((k + 1) + 1) < ( len W2) by XXREAL_0: 1;

                  

                   A20: ((n + 1) + 1) = (( len W1) + ((k + 1) + 1)) by A16;

                  

                   A21: (W2 . ((k + 1) + (1 + 1))) = (W2 . (((k + 1) + 1) + 1))

                  .= (W . (n + (1 + 1))) by A1, A19, A20, Lm13;

                  (W . (n + 1)) = (W2 . ((k + 1) + 1)) by A1, A16, A18, Lm13;

                  hence (W . (n + 1)) DJoins ((W . n),(W . (n + 2)),G) by A17, A18, A21, Lm51;

                end;

              end;

              hence (W . (n + 1)) DJoins ((W . n),(W . (n + 2)),G);

            end;

            hence thesis by Lm51;

          end;

            suppose (W1 .last() ) <> (W2 .first() );

            hence thesis by Def10;

          end;

        end;

        hence thesis;

      end;

    end

    registration

      let G be _Graph, W1,W2 be trivial Walk of G;

      cluster (W1 .append W2) -> trivial;

      coherence

      proof

        set W = (W1 .append W2);

        now

          per cases ;

            suppose (W1 .last() ) = (W2 .first() );

            

            then (( len W) + 1) = (( len W1) + ( len W2)) by Lm9

            .= (( len W1) + 1) by Lm55

            .= (1 + 1) by Lm55;

            hence thesis by Lm55;

          end;

            suppose (W1 .last() ) <> (W2 .first() );

            hence thesis by Def10;

          end;

        end;

        hence thesis;

      end;

    end

    registration

      let G be _Graph, W be DWalk of G, m,n be Element of NAT ;

      cluster (W .cut (m,n)) -> directed;

      coherence by Lm53;

    end

    registration

      let G be _Graph, W be trivial Walk of G, m,n be Element of NAT ;

      cluster (W .cut (m,n)) -> trivial;

      coherence

      proof

        set W2 = (W .cut (m,n));

        now

          per cases ;

            suppose

             A1: m is odd & n is odd & m <= n & n <= ( len W);

            then

             A2: 1 <= n by ABIAN: 12;

            n <= 1 by A1, Lm55;

            then

             A3: n = 1 by A2, XXREAL_0: 1;

            

             A4: 1 <= m by A1, ABIAN: 12;

            (( len W2) + m) = (n + 1) by A1, Lm15;

            then (( len W2) + 1) = (1 + 1) by A1, A4, A3, XXREAL_0: 1;

            hence thesis by Lm55;

          end;

            suppose not (m is odd & n is odd & m <= n & n <= ( len W));

            hence thesis by Def11;

          end;

        end;

        hence thesis;

      end;

    end

    registration

      let G be _Graph, W be Trail of G, m,n be Element of NAT ;

      cluster (W .cut (m,n)) -> Trail-like;

      coherence by Lm59;

    end

    registration

      let G be _Graph, W be Path of G, m,n be Element of NAT ;

      cluster (W .cut (m,n)) -> Path-like;

      coherence by Lm64;

    end

    registration

      let G be _Graph, W be vertex-distinct Walk of G, m,n be Element of NAT ;

      cluster (W .cut (m,n)) -> vertex-distinct;

      coherence

      proof

        set W2 = (W .cut (m,n));

        now

          per cases ;

            suppose

             A1: m is odd & n is odd & m <= n & n <= ( len W);

            then

            reconsider m9 = m as odd Element of NAT ;

            now

              let a,b be odd Element of NAT ;

              assume that

               A2: a <= ( len W2) and

               A3: b <= ( len W2) and

               A4: (W2 . a) = (W2 . b);

              reconsider aaa1 = (a - 1), baa1 = (b - 1) as even Element of NAT by ABIAN: 12, INT_1: 5;

              

               A5: baa1 < (( len W2) - 0 ) by A3, XREAL_1: 15;

              then

               A6: (W2 . (baa1 + 1)) = (W . (m + baa1)) by A1, Lm15;

              

               A7: aaa1 < (( len W2) - 0 ) by A2, XREAL_1: 15;

              then (m + aaa1) in ( dom W) by A1, Lm15;

              then

               A8: (m9 + aaa1) <= ( len W) by FINSEQ_3: 25;

              (m + baa1) in ( dom W) by A1, A5, Lm15;

              then

               A9: (m9 + baa1) <= ( len W) by FINSEQ_3: 25;

              (W2 . (aaa1 + 1)) = (W . (m + aaa1)) by A1, A7, Lm15;

              then (aaa1 + m9) = (baa1 + m9) by A4, A6, A8, A9, Def29;

              hence a = b;

            end;

            hence thesis;

          end;

            suppose not (m is odd & n is odd & m <= n & n <= ( len W));

            hence thesis by Def11;

          end;

        end;

        hence thesis;

      end;

    end

    registration

      let G be _Graph, W be closed Walk of G, m,n be Element of NAT ;

      cluster (W .remove (m,n)) -> closed;

      coherence

      proof

        

        thus ((W .remove (m,n)) .first() ) = (W .first() ) by Lm33

        .= (W .last() ) by Def24

        .= ((W .remove (m,n)) .last() ) by Lm33;

      end;

    end

    registration

      let G be _Graph, W be DWalk of G, m,n be Element of NAT ;

      cluster (W .remove (m,n)) -> directed;

      coherence

      proof

        now

          per cases ;

            suppose m is odd & n is odd & m <= n & n <= ( len W) & (W . m) = (W . n);

            then (W .remove (m,n)) = ((W .cut (1,m)) .append (W .cut (n,( len W)))) by Def12;

            hence thesis;

          end;

            suppose not (m is odd & n is odd & m <= n & n <= ( len W) & (W . m) = (W . n));

            hence thesis by Def12;

          end;

        end;

        hence thesis;

      end;

    end

    registration

      let G be _Graph, W be trivial Walk of G, m,n be Element of NAT ;

      cluster (W .remove (m,n)) -> trivial;

      coherence

      proof

        now

          per cases ;

            suppose m is odd & n is odd & m <= n & n <= ( len W) & (W . m) = (W . n);

            then (W .remove (m,n)) = ((W .cut (1,m)) .append (W .cut (n,( len W)))) by Def12;

            hence thesis;

          end;

            suppose not (m is odd & n is odd & m <= n & n <= ( len W) & (W . m) = (W . n));

            hence thesis by Def12;

          end;

        end;

        hence thesis;

      end;

    end

    registration

      let G be _Graph, W be Trail of G, m,n be Element of NAT ;

      cluster (W .remove (m,n)) -> Trail-like;

      coherence

      proof

        set W2 = (W .remove (m,n));

        

         A1: ( len W2) <= ( len W) by Lm26;

        now

          per cases ;

            suppose

             A2: m is odd & n is odd & m <= n & n <= ( len W) & (W . m) = (W . n);

            then

            reconsider m9 = m, n9 = n as odd Element of NAT ;

            now

              given a,b be even Element of NAT such that

               A3: 1 <= a and

               A4: a < b and

               A5: b <= ( len W2) and

               A6: (W2 . a) = (W2 . b);

              1 <= b by A3, A4, XXREAL_0: 2;

              then

               A7: b in ( dom W2) by A5, FINSEQ_3: 25;

              a <= ( len W2) by A4, A5, XXREAL_0: 2;

              then

               A8: a in ( dom W2) by A3, FINSEQ_3: 25;

              now

                per cases by A2, A8, Lm34;

                  suppose a in ( Seg m);

                  then

                   A9: (W2 . a) = (W . a) by A2, Lm29;

                  now

                    per cases by A2, A7, Lm34;

                      suppose

                       A10: b in ( Seg m);

                      

                       A11: b <= ( len W) by A1, A5, XXREAL_0: 2;

                      (W2 . b) = (W . b) by A2, A10, Lm29;

                      hence contradiction by A3, A4, A6, A9, A11, Lm57;

                    end;

                      suppose

                       A12: m <= b & b <= ( len W2);

                      then

                      reconsider b2 = ((b - m9) + n9) as even Element of NAT by A2, Lm30;

                      

                       A13: b2 <= ( len W) by A2, A12, Lm30;

                      

                       A14: (W2 . b) = (W . b2) by A2, A12, Lm30;

                      now

                        per cases ;

                          suppose a < b2;

                          hence contradiction by A3, A6, A9, A14, A13, Lm57;

                        end;

                          suppose

                           A15: b2 <= a;

                          

                           A16: (n - m) >= (m - m) by A2, XREAL_1: 13;

                          

                           A17: (a - b) < (b - b) by A4, XREAL_1: 14;

                          (((n - m) + b) - b) <= (a - b) by A15, XREAL_1: 13;

                          then 0 <= (a - b) by A16;

                          hence contradiction by A17;

                        end;

                      end;

                      hence contradiction;

                    end;

                  end;

                  hence contradiction;

                end;

                  suppose

                   A18: m <= a & a <= ( len W2);

                  then

                  reconsider a2 = ((a - m9) + n9) as even Element of NAT by A2, Lm30;

                  reconsider nm4 = (n9 - m9) as even Element of NAT by A2, INT_1: 5;

                  

                   A19: (W2 . a) = (W . a2) by A2, A18, Lm30;

                  now

                    per cases by A2, A7, Lm34;

                      suppose b in ( Seg m);

                      then b <= m by FINSEQ_1: 1;

                      hence contradiction by A4, A18, XXREAL_0: 2;

                    end;

                      suppose

                       A20: m <= b & b <= ( len W2);

                      then

                      reconsider b2 = ((b - m9) + n9) as even Element of NAT by A2, Lm30;

                      

                       A21: b2 <= ( len W) by A2, A20, Lm30;

                      

                       A22: (W2 . b) = (W . b2) by A2, A20, Lm30;

                      now

                        per cases ;

                          suppose

                           A23: a2 < b2;

                          1 <= m9 by ABIAN: 12;

                          then 1 <= a by A18, XXREAL_0: 2;

                          then 1 <= (a + nm4) by NAT_1: 12;

                          hence contradiction by A6, A19, A22, A21, A23, Lm57;

                        end;

                          suppose b2 <= a2;

                          then (b + nm4) <= (a + nm4);

                          hence contradiction by A4, XREAL_1: 6;

                        end;

                      end;

                      hence contradiction;

                    end;

                  end;

                  hence contradiction;

                end;

              end;

              hence contradiction;

            end;

            hence thesis by Lm57;

          end;

            suppose not (m is odd & n is odd & m <= n & n <= ( len W) & (W . m) = (W . n));

            hence thesis by Def12;

          end;

        end;

        hence thesis;

      end;

    end

    registration

      let G be _Graph, W be Path of G, m,n be Element of NAT ;

      cluster (W .remove (m,n)) -> Path-like;

      coherence

      proof

        set W2 = (W .remove (m,n));

        

         A1: ( len W2) <= ( len W) by Lm26;

        now

          per cases ;

            suppose

             A2: m is odd & n is odd & m <= n & n <= ( len W) & (W . m) = (W . n);

            then

            reconsider m9 = m, n9 = n as odd Element of NAT ;

            now

              let x,y be odd Element of NAT ;

              assume that

               A3: x < y and

               A4: y <= ( len W2) and

               A5: (W2 . x) = (W2 . y);

              

               A6: 1 <= x by ABIAN: 12;

              x <= ( len W2) by A3, A4, XXREAL_0: 2;

              then

               A7: x in ( dom W2) by A6, FINSEQ_3: 25;

              1 <= y by ABIAN: 12;

              then

               A8: y in ( dom W2) by A4, FINSEQ_3: 25;

              

               A9: y <= ( len W) by A1, A4, XXREAL_0: 2;

              now

                per cases by A2, A7, Lm34;

                  suppose x in ( Seg m);

                  then

                   A10: (W2 . x) = (W . x) by A2, Lm29;

                  now

                    per cases by A2, A8, Lm34;

                      suppose y in ( Seg m);

                      then

                       A11: (W2 . y) = (W . y) by A2, Lm29;

                      then y = ( len W) by A3, A5, A9, A10, Def28;

                      hence x = 1 & y = ( len W2) by A1, A3, A4, A5, A10, A11, Def28, XXREAL_0: 1;

                    end;

                      suppose

                       A12: m <= y & y <= ( len W2);

                      then

                       A13: ((y - m) + n) <= ( len W) by A2, Lm30;

                      

                       A14: (W2 . y) = (W . ((y - m) + n)) by A2, A12, Lm30;

                      reconsider y2 = ((y - m9) + n9) as odd Element of NAT by A2, A12, Lm30;

                      ((y - m) + n) >= ((y - m) + m) by A2, XREAL_1: 7;

                      then

                       A15: x < y2 by A3, XXREAL_0: 2;

                      y2 <= ( len W) by A2, A12, Lm30;

                      then y2 = ( len W) by A5, A10, A14, A15, Def28;

                      

                      then (( len W2) + n) = (((y - m) + n) + m) by A2, Lm24

                      .= (y + n);

                      hence x = 1 & y = ( len W2) by A5, A10, A14, A13, A15, Def28;

                    end;

                  end;

                  hence x = 1 & y = ( len W2);

                end;

                  suppose

                   A16: m <= x & x <= ( len W2);

                  then

                  reconsider x2 = ((x - m9) + n9) as odd Element of NAT by A2, Lm30;

                  

                   A17: (W2 . x) = (W . ((x - m) + n)) by A2, A16, Lm30;

                  now

                    per cases by A2, A8, Lm34;

                      suppose y in ( Seg m);

                      then y <= m by FINSEQ_1: 1;

                      hence x = 1 & y = ( len W2) by A3, A16, XXREAL_0: 2;

                    end;

                      suppose

                       A18: m <= y & y <= ( len W2);

                      then

                      reconsider y2 = ((y - m9) + n9) as odd Element of NAT by A2, Lm30;

                      (x + (n - m)) < (y + (n - m)) by A3, XREAL_1: 8;

                      then

                       A19: x2 < y2;

                      reconsider xm4 = (x - m) as Element of NAT by A16, INT_1: 5;

                      

                       A20: 1 <= n9 by ABIAN: 12;

                      

                       A21: 1 <= m9 by ABIAN: 12;

                      

                       A22: ((y - m) + n) <= ( len W) by A2, A18, Lm30;

                      

                       A23: (W2 . y) = (W . ((y - m) + n)) by A2, A18, Lm30;

                      then y2 = ( len W) by A5, A17, A22, A19, Def28;

                      

                      then

                       A24: (( len W2) + n) = (((y - m) + n) + m) by A2, Lm24

                      .= (y + n);

                      x2 = 1 by A5, A17, A23, A22, A19, Def28;

                      then (x2 - n9) <= (1 - 1) by A20, XREAL_1: 13;

                      then

                       A25: xm4 = 0 ;

                      then m <= 1 by A2, A5, A17, A23, A22, A19, Def28;

                      hence x = 1 & y = ( len W2) by A24, A25, A21, XXREAL_0: 1;

                    end;

                  end;

                  hence x = 1 & y = ( len W2);

                end;

              end;

              hence x = 1 & y = ( len W2);

            end;

            hence thesis;

          end;

            suppose not (m is odd & n is odd & m <= n & n <= ( len W) & (W . m) = (W . n));

            hence thesis by Def12;

          end;

        end;

        hence thesis;

      end;

    end

    definition

      let G be _Graph, W be Walk of G;

      :: GLIB_001:def32

      mode Subwalk of W -> Walk of G means

      : Def32: it is_Walk_from ((W .first() ),(W .last() )) & ex es be Subset of (W .edgeSeq() ) st (it .edgeSeq() ) = ( Seq es);

      existence

      proof

        reconsider es = (W .edgeSeq() ) as Subset of (W .edgeSeq() ) by FINSEQ_6: 152;

        take W;

        thus W is_Walk_from ((W .first() ),(W .last() ));

        take es;

        thus thesis by FINSEQ_3: 116;

      end;

    end

    

     Lm70: for G be _Graph, W be Walk of G holds W is Subwalk of W

    proof

      let G be _Graph, W be Walk of G;

      reconsider es = (W .edgeSeq() ) as Subset of (W .edgeSeq() ) by FINSEQ_6: 152;

      

       A1: (W .edgeSeq() ) = ( Seq es) by FINSEQ_3: 116;

      W is_Walk_from ((W .first() ),(W .last() ));

      hence thesis by A1, Def32;

    end;

    

     Lm71: for G be _Graph, W1 be Walk of G, W2 be Subwalk of W1, W3 be Subwalk of W2 holds W3 is Subwalk of W1

    proof

      let G be _Graph, W1 be Walk of G, W2 be Subwalk of W1, W3 be Subwalk of W2;

      set fs = (W1 .edgeSeq() ), fs1 = (W2 .edgeSeq() ), fs2 = (W3 .edgeSeq() );

      consider fss1 be Subset of fs1 such that

       A1: fs2 = ( Seq fss1) by Def32;

      consider fss be Subset of fs such that

       A2: fs1 = ( Seq fss) by Def32;

      set fss2 = (fss | ( rng (( Sgm ( dom fss)) | ( dom fss1))));

      reconsider fss2 as Subset of fs by FINSEQ_6: 153;

      

       A3: fs2 = ( Seq fss2) by A1, A2, FINSEQ_6: 154;

      

       A4: W2 is_Walk_from ((W1 .first() ),(W1 .last() )) by Def32;

      then

       A5: (W2 .last() ) = (W1 .last() );

      (W2 .first() ) = (W1 .first() ) by A4;

      hence thesis by A5, A3, Def32;

    end;

    

     Lm72: for G be _Graph, W1,W2 be Walk of G holds W1 is Subwalk of W2 implies ( len W1) <= ( len W2)

    proof

      let G be _Graph, W1,W2 be Walk of G;

      assume W1 is Subwalk of W2;

      then ex es be Subset of (W2 .edgeSeq() ) st (W1 .edgeSeq() ) = ( Seq es) by Def32;

      then (2 * ( len (W1 .edgeSeq() ))) <= (2 * ( len (W2 .edgeSeq() ))) by Th2, XREAL_1: 64;

      then ((2 * ( len (W1 .edgeSeq() ))) + 1) <= ((2 * ( len (W2 .edgeSeq() ))) + 1) by XREAL_1: 7;

      then ( len W1) <= ((2 * ( len (W2 .edgeSeq() ))) + 1) by Def15;

      hence thesis by Def15;

    end;

    definition

      let G be _Graph, W be Walk of G, m,n be Element of NAT ;

      :: original: .remove

      redefine

      func W .remove (m,n) -> Subwalk of W ;

      coherence

      proof

        set W2 = (W .remove (m,n)), es1 = (W2 .edgeSeq() );

        now

          per cases ;

            suppose

             A1: m is odd & n is odd & m <= n & n <= ( len W) & (W . m) = (W . n);

            then

            reconsider m9 = m, n9 = n as odd Element of NAT ;

            reconsider lenWn4 = (( len W) - n9) as even Element of NAT by A1, INT_1: 5;

            

             A2: ( Seg ( len es1)) = ( dom es1) by FINSEQ_1:def 3;

            reconsider lenWaa1 = (( len W) - 1) as even Element of NAT by ABIAN: 12, INT_1: 5;

            reconsider n1 = (n9 + 1) as even Element of NAT ;

            reconsider maa1 = (m9 - 1) as even Element of NAT by ABIAN: 12, INT_1: 5;

            set X = { x where x be Nat : 1 <= x & x <= (maa1 div 2) };

            set Y = { x where x be Nat : (n1 div 2) <= x & x <= (lenWaa1 div 2) };

            set Z = (X \/ Y), es = ((W .edgeSeq() ) | Z);

            2 divides maa1 by PEPIN: 22;

            then

             A3: maa1 = (2 * (maa1 div 2)) by NAT_D: 3;

            2 divides n1 by PEPIN: 22;

            then

             A4: n1 = (2 * (n1 div 2)) by NAT_D: 3;

            now

              assume (n1 div 2) < 1;

              then (2 * (n1 div 2)) < (2 * 1) by XREAL_1: 68;

              then ((n + 1) - 1) < (2 - 1) by A4, XREAL_1: 14;

              then n9 < 1;

              hence contradiction by ABIAN: 12;

            end;

            then

            reconsider n1div2aa1 = ((n1 div 2) - 1) as Element of NAT by INT_1: 5;

            

             A5: 2 divides lenWaa1 by PEPIN: 22;

            then

             A6: lenWaa1 = (2 * (lenWaa1 div 2)) by NAT_D: 3;

            now

              let x be object;

              assume

               A7: x in Z;

              now

                per cases by A7, XBOOLE_0:def 3;

                  suppose x in X;

                  then

                  consider y be Nat such that

                   A8: y = x and

                   A9: 1 <= y and

                   A10: y <= (maa1 div 2);

                  (2 * y) <= maa1 by A3, A10, XREAL_1: 64;

                  then (2 * y) <= (maa1 + 1) by NAT_1: 12;

                  then (2 * y) <= n by A1, XXREAL_0: 2;

                  then

                   A11: (2 * y) <= ( len W) by A1, XXREAL_0: 2;

                  1 <= (y + y) by A9, NAT_1: 12;

                  then (2 * y) in ( dom W) by A11, FINSEQ_3: 25;

                  hence x in ( dom (W .edgeSeq() )) by A8, Lm41;

                end;

                  suppose x in Y;

                  then

                  consider y be Nat such that

                   A12: y = x and

                   A13: (n1 div 2) <= y and

                   A14: y <= (lenWaa1 div 2);

                  (2 * y) <= lenWaa1 by A6, A14, XREAL_1: 64;

                  then

                   A15: (2 * y) <= (lenWaa1 + 1) by NAT_1: 12;

                  

                   A16: 1 <= n1 by NAT_1: 12;

                  n1 <= (2 * y) by A4, A13, XREAL_1: 64;

                  then 1 <= (2 * y) by A16, XXREAL_0: 2;

                  then (2 * y) in ( dom W) by A15, FINSEQ_3: 25;

                  hence x in ( dom (W .edgeSeq() )) by A12, Lm41;

                end;

              end;

              hence x in ( dom (W .edgeSeq() ));

            end;

            then

             A17: Z c= ( dom (W .edgeSeq() )) by TARSKI:def 3;

            then

             A18: Z c= ( Seg ( len (W .edgeSeq() ))) by FINSEQ_1:def 3;

            then

             A19: X c= ( Seg ( len (W .edgeSeq() ))) by XBOOLE_1: 11;

            

             A20: Y c= ( Seg ( len (W .edgeSeq() ))) by A18, XBOOLE_1: 11;

            reconsider X, Y as finite set by A18, FINSET_1: 1, XBOOLE_1: 11;

            

             A21: X = { x where x be Nat : ( 0 + 1) <= x & x <= ( 0 + (maa1 div 2)) };

            

             A22: (( dom (W .edgeSeq() )) /\ Z) = Z by A17, XBOOLE_1: 28;

            then

             A23: ( dom es) = Z by RELAT_1: 61;

            2 divides lenWn4 by PEPIN: 22;

            then

             A24: lenWn4 = (2 * (lenWn4 div 2)) by NAT_D: 3;

             A25:

            now

              per cases ;

                suppose

                 A26: (n1 div 2) > (lenWaa1 div 2);

                then lenWaa1 < (n + 1) by A6, A4, XREAL_1: 68;

                then (lenWaa1 + 1) <= (n + 1) by NAT_1: 13;

                then ( len W) <= (n9 + 1);

                then ( len W) < (n + 1) by XXREAL_0: 1;

                then ( len W) <= n by NAT_1: 13;

                then

                 A27: ( len W) = n by A1, XXREAL_0: 1;

                now

                  assume Y <> {} ;

                  then

                  consider x be object such that

                   A28: x in Y by XBOOLE_0:def 1;

                  ex x9 be Nat st x9 = x & (n1 div 2) <= x9 & x9 <= (lenWaa1 div 2) by A28;

                  hence contradiction by A26, XXREAL_0: 2;

                end;

                hence ( card Y) = (lenWn4 div 2) by A27, NAT_2: 2;

              end;

                suppose (n1 div 2) <= (lenWaa1 div 2);

                then

                reconsider k = ((lenWaa1 div 2) - (n1 div 2)) as Element of NAT by INT_1: 5;

                Y = { x where x be Nat : (n1 div 2) <= x & x <= ((n1 div 2) + k) };

                then ( card Y) = (k + 1) by FINSEQ_6: 130;

                hence ( card Y) = (lenWn4 div 2) by A24, A6, A4;

              end;

            end;

            reconsider Z as finite set by A17;

            (W .edgeSeq() ) is Subset of (W .edgeSeq() ) by FINSEQ_6: 152;

            then

            reconsider es as Subset of (W .edgeSeq() ) by FINSEQ_6: 153;

            set es2 = ( Seq es);

            

             A29: es2 = (es * ( Sgm ( dom es))) by FINSEQ_1:def 14;

            set lenY = ((lenWaa1 div 2) - n1div2aa1);

            now

              assume n1div2aa1 > (lenWaa1 div 2);

              then (2 * n1div2aa1) > (2 * (lenWaa1 div 2)) by XREAL_1: 68;

              then (((n + 1) - 1) - 1) > (( len W) - 1) by A5, A4, NAT_D: 3;

              hence contradiction by A1, XREAL_1: 9;

            end;

            then

            reconsider lenY as Element of NAT by INT_1: 5;

            

             A30: Y = { x where x be Nat : (n1div2aa1 + 1) <= x & x <= (n1div2aa1 + lenY) };

             A31:

            now

              let a,b be Nat;

              assume that

               A32: a in X and

               A33: b in Y;

              consider b9 be Nat such that

               A34: b9 = b and

               A35: (n1 div 2) <= b9 and b9 <= (lenWaa1 div 2) by A33;

              consider a9 be Nat such that

               A36: a9 = a and 1 <= a9 and

               A37: a9 <= (maa1 div 2) by A32;

              (2 * a9) <= maa1 by A3, A37, XREAL_1: 64;

              then (2 * a9) < (maa1 + 1) by NAT_1: 13;

              then (2 * a9) < n by A1, XXREAL_0: 2;

              then

               A38: ((2 * a9) + 0 ) < (n + 1) by XREAL_1: 8;

              

               A39: (n + 1) <= (2 * b9) by A4, A35, XREAL_1: 64;

              then (2 * a9) < (2 * b9) by A38, XXREAL_0: 2;

              then a9 <= b9 by XREAL_1: 68;

              hence a < b by A36, A34, A38, A39, XXREAL_0: 1;

            end;

             A40:

            now

              per cases ;

                suppose

                 A41: (maa1 div 2) = 0 ;

                now

                  assume X <> {} ;

                  then

                  consider x be object such that

                   A42: x in X by XBOOLE_0:def 1;

                  ex x9 be Nat st x9 = x & 1 <= x9 & x9 <= (maa1 div 2) by A42;

                  hence contradiction by A41;

                end;

                hence ( card X) = (maa1 div 2) by A41;

              end;

                suppose (maa1 div 2) <> 0 ;

                then

                consider k be Nat such that

                 A43: (maa1 div 2) = (k + 1) by NAT_1: 6;

                reconsider k as Element of NAT by ORDINAL1:def 12;

                (maa1 div 2) = (k + 1) by A43;

                hence ( card X) = (maa1 div 2) by FINSEQ_6: 130;

              end;

            end;

            then

             A44: ( dom ( Sgm X)) = ( Seg (maa1 div 2)) by A18, FINSEQ_3: 40, XBOOLE_1: 11;

            then

             A45: ( len ( Sgm X)) = (maa1 div 2) by FINSEQ_1:def 3;

            ( len W2) = ((2 * ( len (W2 .edgeSeq() ))) + 1) by Def15;

            then

             A46: ((( len W) + m) - n) = ((2 * ( len es1)) + 1) by A1, Lm31;

            now

              assume not (X /\ Y) = {} ;

              then

              consider x be object such that

               A47: x in (X /\ Y) by XBOOLE_0:def 1;

              x in Y by A47, XBOOLE_0:def 4;

              then

              consider y9 be Nat such that

               A48: y9 = x and

               A49: (n1 div 2) <= y9 and y9 <= (lenWaa1 div 2);

              x in X by A47, XBOOLE_0:def 4;

              then

              consider x9 be Nat such that

               A50: x9 = x and 1 <= x9 and

               A51: x9 <= (maa1 div 2);

              (2 * x9) <= maa1 by A3, A51, XREAL_1: 64;

              then (2 * y9) < (maa1 + 1) by A50, A48, NAT_1: 13;

              then (2 * y9) < n by A1, XXREAL_0: 2;

              then ((2 * y9) + 0 ) < (n + 1) by XREAL_1: 8;

              hence contradiction by A4, A49, XREAL_1: 64;

            end;

            then X misses Y by XBOOLE_0:def 7;

            then

             A52: ( card Z) = ((maa1 div 2) + (lenWn4 div 2)) by A40, A25, CARD_2: 40;

            ( dom es) c= ( Seg ( len (W .edgeSeq() ))) by A22, A18, RELAT_1: 61;

            then ( rng ( Sgm ( dom es))) = ( dom es) by FINSEQ_1:def 13;

            

            then

             A53: ( dom es2) = ( dom ( Sgm Z)) by A23, A29, RELAT_1: 27

            .= ( Seg ( card Z)) by A18, FINSEQ_3: 40;

            

             A54: ( dom ( Sgm Y)) = ( Seg (lenWn4 div 2)) by A18, A25, FINSEQ_3: 40, XBOOLE_1: 11;

            now

              let x9 be object;

              assume

               A55: x9 in ( dom es1);

              then

              reconsider x = x9 as Element of NAT ;

              

               A56: 1 <= x by A55, FINSEQ_3: 25;

              

               A57: x <= ( len es1) by A55, FINSEQ_3: 25;

              then

               A58: (es1 . x) = (W2 . (2 * x)) by A56, Def15;

              now

                per cases ;

                  suppose

                   A59: ((2 * x) + 1) <= m;

                  

                   A60: 1 <= (x + x) by A56, NAT_1: 12;

                  (((2 * x) + 1) - 1) < (m - 0 ) by A59, XREAL_1: 15;

                  then (2 * x) in ( Seg m) by A60, FINSEQ_1: 1;

                  then

                   A61: (es1 . x9) = (W . (2 * x)) by A1, A58, Lm29;

                  

                   A62: (( Sgm Z) . x) = ((( Sgm X) ^ ( Sgm Y)) . x) by A19, A20, A31, FINSEQ_3: 42;

                  (((2 * x) + 1) - 1) <= maa1 by A59, XREAL_1: 13;

                  then

                   A63: x <= (maa1 div 2) by A3, XREAL_1: 68;

                  then x in X by A56;

                  then

                   A64: x in ( dom es) by A23, XBOOLE_0:def 3;

                  x in ( dom ( Sgm X)) by A44, A56, A63, FINSEQ_1: 1;

                  

                  then (( Sgm Z) . x) = (( Sgm X) . x) by A62, FINSEQ_1:def 7

                  .= ( 0 + x) by A21, A56, A63, FINSEQ_6: 131;

                  then (es2 . x) = (es . x) by A3, A24, A23, A2, A29, A53, A46, A52, A55, FUNCT_1: 12;

                  then

                   A65: (es2 . x) = ((W .edgeSeq() ) . x) by A64, FUNCT_1: 47;

                  x <= ( len (W .edgeSeq() )) by A23, A18, A64, FINSEQ_1: 1;

                  hence (es1 . x9) = (es2 . x9) by A56, A61, A65, Def15;

                end;

                  suppose

                   A66: ((2 * x) + 1) > m;

                   A67:

                  now

                    assume x <= (maa1 div 2);

                    then (2 * x) <= maa1 by A3, XREAL_1: 64;

                    then ((2 * x) + 1) <= (maa1 + 1) by XREAL_1: 7;

                    hence contradiction by A66;

                  end;

                  then

                  consider k be Nat such that

                   A68: x = ((maa1 div 2) + k) by NAT_1: 10;

                  

                   A69: (( Sgm Z) . x) = ((( Sgm X) ^ ( Sgm Y)) . x) by A19, A20, A31, FINSEQ_3: 42;

                  

                   A70: ex lenWaa19 be even Element of NAT st lenWaa19 = lenWaa1 & ( len (W .edgeSeq() )) = (lenWaa19 div 2) by Lm42;

                  (2 * x) <= (2 * ( len es1)) by A57, XREAL_1: 64;

                  then (2 * x) <= ((2 * ( len es1)) + 1) by NAT_1: 12;

                  then

                   A71: (2 * x) <= ( len W2) by Def15;

                  reconsider k as Element of NAT by ORDINAL1:def 12;

                  

                   A72: (2 * (n1div2aa1 + k)) = (((2 * x) - m) + n) by A3, A4, A68;

                  

                   A73: m <= (2 * x) by A66, NAT_1: 13;

                  then

                   A74: (((2 * x) - m) + n) <= ( len W) by A1, A71, Lm30;

                   A75:

                  now

                    reconsider z = (((2 * x) - m9) + n9) as Element of NAT by A1, A73, A71, Lm30;

                    assume (lenWaa1 div 2) < (k + n1div2aa1);

                    then lenWaa1 < (2 * ((x - (maa1 div 2)) + n1div2aa1)) by A6, A68, XREAL_1: 68;

                    then (lenWaa1 + 1) < ((((2 * x) - m) + n) + 1) by A3, A4, XREAL_1: 8;

                    then ( len W) <= z by NAT_1: 13;

                    hence contradiction by A74, XXREAL_0: 1;

                  end;

                  k <> 0 by A67, A68;

                  then ( 0 + 1) < (k + 1) by XREAL_1: 8;

                  then

                   A76: 1 <= k by NAT_1: 13;

                  then (n1div2aa1 + 1) <= (n1div2aa1 + k) by XREAL_1: 7;

                  then (n1div2aa1 + k) in Y by A75;

                  then (n1div2aa1 + k) in ( dom es) by A23, XBOOLE_0:def 3;

                  then

                   A77: (es . (n1div2aa1 + k)) = ((W .edgeSeq() ) . (n1div2aa1 + k)) by FUNCT_1: 47;

                   A78:

                  now

                    set z = (((2 * x) - m9) + n9);

                    reconsider z as Element of NAT by A1, A73, A71, Lm30;

                    assume (lenWn4 div 2) < (x - (maa1 div 2));

                    then (2 * (lenWn4 div 2)) < (2 * (x - (maa1 div 2))) by XREAL_1: 68;

                    then

                     A79: (lenWn4 + n) < ((((2 * x) - m) + 1) + n) by A3, A24, XREAL_1: 8;

                    (((2 * x) - m9) + n9) < ( len W) by A74, XXREAL_0: 1;

                    then (z + 1) <= ( len W) by NAT_1: 13;

                    hence contradiction by A79;

                  end;

                  then k in ( dom ( Sgm Y)) by A54, A68, A76, FINSEQ_1: 1;

                  

                  then (( Sgm Z) . x) = (( Sgm Y) . k) by A45, A69, A68, FINSEQ_1:def 7

                  .= (n1div2aa1 + k) by A24, A6, A4, A30, A68, A76, A78, FINSEQ_6: 131;

                  then

                   A80: (es2 . x) = (es . (n1div2aa1 + k)) by A3, A24, A23, A2, A29, A53, A46, A52, A55, FUNCT_1: 12;

                  1 <= (n1div2aa1 + k) by A76, NAT_1: 12;

                  then (es2 . x) = (W . (2 * (n1div2aa1 + k))) by A80, A75, A77, A70, Def15;

                  hence (es1 . x9) = (es2 . x9) by A1, A58, A73, A71, A72, Lm30;

                end;

              end;

              hence (es1 . x9) = (es2 . x9);

            end;

            then

             A81: (W2 .edgeSeq() ) = ( Seq es) by A3, A24, A2, A53, A46, A52, FUNCT_1: 2;

            W is_Walk_from ((W .first() ),(W .last() ));

            then W2 is_Walk_from ((W .first() ),(W .last() )) by Lm25;

            hence thesis by A81, Def32;

          end;

            suppose not (m is odd & n is odd & m <= n & n <= ( len W) & (W . m) = (W . n));

            then (W .remove (m,n)) = W by Def12;

            hence thesis by Lm70;

          end;

        end;

        hence thesis;

      end;

    end

    registration

      let G be _Graph, W be Walk of G;

      cluster Trail-like Path-like for Subwalk of W;

      existence

      proof

        set n = (( len W) + 1);

        defpred P1[ Nat, set, set] means ($2 is Walk of G & ex Wn be Walk of G st Wn = $2 & $3 = (Wn .remove ((Wn .find ((2 * $1) + 1)),(Wn .rfind ((2 * $1) + 1))))) or ( not $2 is Walk of G & $3 = $2);

         A1:

        now

          let n be Nat, x be set;

          now

            per cases ;

              suppose x is Walk of G;

              then

              reconsider W = x as Walk of G;

              set y = (W .remove ((W .find ((2 * n) + 1)),(W .rfind ((2 * n) + 1))));

               P1[n, x, y];

              hence ex y be set st P1[n, x, y];

            end;

              suppose not x is Walk of G;

              hence ex y be set st P1[n, x, y];

            end;

          end;

          hence ex y be set st P1[n, x, y];

        end;

        consider f be Function such that

         A2: ( dom f) = NAT & (f . 0 ) = W & for n be Nat holds P1[n, (f . n), (f . (n + 1))] from RECDEF_1:sch 1( A1);

        defpred P3[ Nat] means ex Wn be Subwalk of W st Wn = (f . $1) & ( len Wn) <= ( len W) & for m be odd Element of NAT st m < ((2 * $1) + 1) & m <= ( len Wn) holds (Wn .rfind m) = m;

        now

          let n be Nat;

          assume P3[n];

          then

          consider Wn be Subwalk of W such that

           A3: Wn = (f . n) and

           A4: ( len Wn) <= ( len W) and

           A5: for m be odd Element of NAT st m < ((2 * n) + 1) & m <= ( len Wn) holds (Wn .rfind m) = m;

          set a = (Wn .find ((2 * n) + 1)), b = (Wn .rfind ((2 * n) + 1));

          set Wn1 = (Wn .remove (a,b));

          reconsider Wn1 as Subwalk of W by Lm71;

          take Wn1;

           P1[n, (f . n), (f . (n + 1))] by A2;

          hence (f . (n + 1)) = Wn1 by A3;

          ( len Wn1) <= ( len Wn) by Lm26;

          hence ( len Wn1) <= ( len W) by A4, XXREAL_0: 2;

          let m be odd Element of NAT ;

          assume that

           A6: m < ((2 * (n + 1)) + 1) and

           A7: m <= ( len Wn1);

          set W1 = (Wn .cut (1,a)), W2 = (Wn .cut (b,( len Wn)));

          

           A8: ( len Wn1) <= ( len Wn) by Lm26;

          then

           A9: m <= ( len Wn) by A7, XXREAL_0: 2;

          m <= (2 * (n + 1)) by A6, NAT_1: 13;

          then m < (((2 * n) + 1) + 1) by XXREAL_0: 1;

          then

           A10: m <= ((2 * n) + 1) by NAT_1: 13;

          now

            per cases ;

              suppose

               A11: ((2 * n) + 1) <= ( len Wn);

              then

               A12: a <= ((2 * n) + 1) by Lm49;

              

               A13: (Wn . a) = (Wn . ((2 * n) + 1)) by A11, Def20;

              

               A14: a <= ( len Wn) by A11, Def20;

               A15:

              now

                assume

                 A16: a < ((2 * n) + 1);

                then a <= ( len Wn) by A11, XXREAL_0: 2;

                then (Wn .rfind a) = a by A5, A16;

                hence contradiction by A11, A14, A13, A16, Def22;

              end;

              then

               A17: a = ((2 * n) + 1) by A12, XXREAL_0: 1;

              

               A18: (Wn . b) = (Wn . ((2 * n) + 1)) by A11, Def22;

              set m9 = (Wn1 .rfind m);

              

               A19: 1 <= m by ABIAN: 12;

              

               A20: (Wn1 . m9) = (Wn1 . m) by A7, Def22;

              

               A21: m9 >= m by A7, Lm50;

              

               A22: b <= ( len Wn) by A11, Def22;

              1 <= a by ABIAN: 12;

              

              then

               A23: (W1 .last() ) = (Wn . ((2 * n) + 1)) by A14, A13, Lm16, JORDAN12: 2

              .= (W2 .first() ) by A22, A18, Lm16;

              ((2 * n) + 1) <= b by A11, Lm50;

              then

               A24: a <= b by A12, XXREAL_0: 2;

              then

               A25: Wn1 = (W1 .append W2) by A13, A22, A18, Def12;

              

               A26: m9 <= ( len Wn1) by A7, Def22;

              then

               A27: m9 <= ( len Wn) by A8, XXREAL_0: 2;

              now

                per cases by A10, XXREAL_0: 1;

                  suppose

                   A28: m < ((2 * n) + 1);

                  then m < ( len (Wn .cut (1,a))) by A11, A17, Lm22;

                  

                  then

                   A29: (Wn1 .cut (1,m)) = ((Wn .cut (1,a)) .cut (1,m)) by A25, A19, A23, Lm21, JORDAN12: 2

                  .= (Wn .cut (1,m)) by A10, A17, Lm20;

                  reconsider maa1 = (m - 1) as Element of NAT by ABIAN: 12, INT_1: 5;

                  

                   A30: (maa1 + 1) = m;

                  

                   A31: maa1 < (m - 0 ) by XREAL_1: 15;

                  then

                   A32: maa1 < ( len (Wn .cut (1,m))) by A7, A8, Lm22, XXREAL_0: 2;

                  maa1 < ( len (Wn1 .cut (1,m))) by A7, A31, Lm22;

                  then (Wn1 . m) = ((Wn .cut (1,m)) . m) by A7, A19, A29, A30, Lm15, JORDAN12: 2;

                  then

                   A33: (Wn1 . m) = (Wn . m) by A9, A19, A30, A32, Lm15, JORDAN12: 2;

                  

                   A34: (Wn .rfind m) = m by A5, A9, A28;

                  now

                    per cases ;

                      suppose

                       A35: m9 < a;

                      reconsider m9aa1 = (m9 - 1) as Element of NAT by ABIAN: 12, INT_1: 5;

                      

                       A36: 1 <= m9 by ABIAN: 12;

                      

                       A37: m9aa1 < (m9 - 0 ) by XREAL_1: 15;

                      then

                       A38: m9aa1 < ( len (Wn1 .cut (1,m9))) by A26, Lm22;

                      

                       A39: m9aa1 < ( len (Wn .cut (1,m9))) by A8, A26, A37, Lm22, XXREAL_0: 2;

                      m9 < ( len (Wn .cut (1,a))) by A14, A35, Lm22;

                      

                      then (Wn1 .cut (1,m9)) = ((Wn .cut (1,a)) .cut (1,m9)) by A25, A23, A36, Lm21, JORDAN12: 2

                      .= (Wn .cut (1,m9)) by A35, Lm20;

                      then (Wn1 . m9) = ((Wn .cut (1,m9)) . (m9aa1 + 1)) by A26, A36, A38, Lm15, JORDAN12: 2;

                      then (Wn . m9) = (Wn . m) by A20, A27, A33, A36, A39, Lm15, JORDAN12: 2;

                      then m9 <= m by A9, A27, A34, Def22;

                      hence (Wn1 .rfind m) = m by A21, XXREAL_0: 1;

                    end;

                      suppose

                       A40: a <= m9;

                      set x = ((m9 - a) + b);

                      

                       A41: (Wn1 . m9) = (Wn . x) by A13, A22, A18, A24, A26, A40, Lm30;

                      

                       A42: x <= ( len Wn) by A13, A22, A18, A24, A26, A40, Lm30;

                      (m9 + a) <= (m9 + b) by A24, XREAL_1: 7;

                      then

                       A43: ((m9 + a) - a) <= ((m9 + b) - a) by XREAL_1: 13;

                      reconsider x as Element of NAT by A13, A22, A18, A24, A26, A40, Lm30;

                      x <= m by A9, A20, A34, A33, A41, A42, Def22;

                      then m9 <= m by A43, XXREAL_0: 2;

                      hence (Wn1 .rfind m) = m by A21, XXREAL_0: 1;

                    end;

                  end;

                  hence (Wn1 .rfind m) = m;

                end;

                  suppose

                   A44: m = ((2 * n) + 1);

                  then m <= ( len (Wn .cut (1,a))) by A11, A17, Lm22;

                  

                  then

                   A45: (Wn1 .cut (1,m)) = ((Wn .cut (1,a)) .cut (1,m)) by A25, A19, A23, Lm21, JORDAN12: 2

                  .= (Wn .cut (1,m)) by A10, A17, Lm20;

                  reconsider maa1 = (m - 1) as Element of NAT by ABIAN: 12, INT_1: 5;

                  

                   A46: (maa1 + 1) = m;

                  

                   A47: maa1 < (m - 0 ) by XREAL_1: 15;

                  then

                   A48: maa1 < ( len (Wn .cut (1,m))) by A7, A8, Lm22, XXREAL_0: 2;

                  maa1 < ( len (Wn1 .cut (1,m))) by A7, A47, Lm22;

                  then (Wn1 . m) = ((Wn .cut (1,m)) . m) by A7, A19, A45, A46, Lm15, JORDAN12: 2;

                  then

                   A49: (Wn1 . m) = (Wn . m) by A9, A19, A46, A48, Lm15, JORDAN12: 2;

                  now

                    set x = ((m9 - a) + b);

                    assume

                     A50: m < m9;

                    then

                     A51: a < m9 by A12, A15, A44, XXREAL_0: 1;

                    then

                     A52: x is Element of NAT by A13, A22, A18, A24, A26, Lm30;

                    

                     A53: x <= ( len Wn) by A13, A22, A18, A24, A26, A51, Lm30;

                    (Wn1 . m9) = (Wn . x) by A13, A22, A18, A24, A26, A51, Lm30;

                    then ((m9 - a) + b) <= b by A11, A20, A44, A49, A52, A53, Def22;

                    then (((m9 - a) + b) - b) <= (b - b) by XREAL_1: 13;

                    then ((m9 - a) + a) <= ( 0 + a) by XREAL_1: 7;

                    hence contradiction by A12, A15, A44, A50, XXREAL_0: 1;

                  end;

                  hence (Wn1 .rfind m) = m by A21, XXREAL_0: 1;

                end;

              end;

              hence (Wn1 .rfind m) = m;

            end;

              suppose

               A54: ( len Wn) < ((2 * n) + 1);

              then

               A55: m < ((2 * n) + 1) by A9, XXREAL_0: 2;

              

               A56: b = ( len Wn) by A54, Def22;

              a = ( len Wn) by A54, Def20;

              then Wn1 = Wn by A56, Lm27;

              hence (Wn1 .rfind m) = m by A5, A7, A55;

            end;

          end;

          hence (Wn1 .rfind m) = m;

        end;

        then

         A57: for n be Nat st P3[n] holds P3[(n + 1)];

        reconsider W0 = (f . 0 ) as Subwalk of W by A2, Lm70;

        for m be odd Element of NAT st m < ((2 * 0 ) + 1) & m <= ( len W0) holds (W0 .rfind m) = m by ABIAN: 12;

        then

         A58: P3[ 0 ] by A2;

        for n be Nat holds P3[n] from NAT_1:sch 2( A58, A57);

        then

        consider P be Subwalk of W such that P = (f . n) and

         A59: ( len P) <= ( len W) and

         A60: for m be odd Element of NAT st m < ((2 * n) + 1) & m <= ( len P) holds (P .rfind m) = m;

        take P;

        now

          let m be odd Element of NAT ;

          assume

           A61: m <= ( len P);

          (( len P) + 0 ) < n by A59, XREAL_1: 8;

          then (( len P) + 0 ) < (n + n) by XREAL_1: 8;

          then (( len P) + 0 ) < ((2 * n) + 1) by XREAL_1: 8;

          then m < ((2 * n) + 1) by A61, XXREAL_0: 2;

          hence (P .rfind m) = m by A60, A61;

        end;

        then P is Path-like by Lm67;

        hence thesis;

      end;

    end

    definition

      let G be _Graph, W be Walk of G;

      mode Trail of W is Trail-like Subwalk of W;

      mode Path of W is Path-like Subwalk of W;

    end

    registration

      let G be _Graph, W be DWalk of G;

      cluster directed for Path of W;

      existence

      proof

        defpred P[ Nat] means for W1 be DWalk of G st (W1 .length() ) = $1 holds ex W2 be Path of W1 st W2 is directed;

        

         A1: (W .length() ) = (W .length() );

        now

          let k be Nat;

          assume

           A2: P[k];

          let W1 be DWalk of G;

          set WA = (W1 .cut (1,((2 * k) + 1)));

          set e = (W1 . (((2 * k) + 1) + 1)), v = (W1 . (((2 * k) + 1) + 2));

          assume

           A3: (W1 .length() ) = (k + 1);

          

          then

           A4: ( len W1) = ((2 * (k + 1)) + 1) by Def15

          .= (((2 * k) + 1) + 2);

          then

           A5: ((((2 * k) + 1) + 2) - 2) < (( len W1) - 0 ) by XREAL_1: 15;

          then

           A6: e DJoins ((W1 . ((2 * k) + 1)),v,G) by Lm51;

          ( len WA) = ((2 * k) + 1) by A5, Lm22;

          then

           A7: ((2 * k) + 1) = ((2 * (WA .length() )) + 1) by Def15;

          then

          consider WB be Path of WA such that

           A8: WB is directed by A2;

          

           A9: (WA .edgeSeq() ) c= (W1 .edgeSeq() ) by Lm43;

          

           A10: WB is_Walk_from ((WA .first() ),(WA .last() )) by Def32;

          

           A11: 1 <= ((2 * k) + 1) by NAT_1: 12;

          then

           A12: (WA .last() ) = (W1 . ((2 * k) + 1)) by A5, Lm16, JORDAN12: 2;

          

           A13: (WA .first() ) = (W1 . 1) by A5, A11, Lm16, JORDAN12: 2;

          then

           A14: (WB .first() ) = (W1 . 1) by A10;

          

           A15: (WB .last() ) = (W1 . ((2 * k) + 1)) by A10, A12;

          then

           A16: e Joins ((WB .last() ),v,G) by A6, GLIB_000: 16;

          now

            per cases ;

              suppose

               A17: WB is closed;

              set W2 = (W1 .remove (1,((2 * k) + 1)));

              (W1 .first() ) = (W1 . ((2 * k) + 1)) by A14, A15, A17;

              then W2 = (W1 .cut (((2 * k) + 1),(((2 * k) + 1) + 2))) by A4, Lm32;

              

              then (( len W2) + ((2 * k) + 1)) = ((((2 * k) + 1) + 2) + 1) by A4, A5, Lm15

              .= (((2 * k) + 1) + (2 + 1));

              then

              reconsider W2 as Path of W1 by Lm69;

              take W2;

              thus W2 is directed;

            end;

              suppose

               A18: WB is open;

              consider esb be Subset of (WA .edgeSeq() ) such that

               A19: (WB .edgeSeq() ) = ( Seq esb) by Def32;

              

               A20: ( Seq esb) is one-to-one by A19, Def27;

              

               A21: ( Seq esb) = (esb * ( Sgm ( dom esb))) by FINSEQ_1:def 14;

               A22:

              now

                let x be object;

                assume x in ( dom esb);

                then [x, (esb . x)] in esb by FUNCT_1: 1;

                then x in ( dom (WA .edgeSeq() )) by FUNCT_1: 1;

                hence x in ( Seg k) by A7, FINSEQ_1:def 3;

              end;

              then

               A23: ( dom esb) c= ( Seg k) by TARSKI:def 3;

              then ( rng ( Sgm ( dom esb))) = ( dom esb) by FINSEQ_1:def 13;

              then

               A24: ( Sgm ( dom esb)) is one-to-one by A21, A20, FUNCT_1: 26;

              now

                per cases ;

                  suppose

                   A25: v in (WB .vertices() );

                  reconsider WB9 = WB as directed Path of G by A8;

                  

                   A26: ( dom ( Sgm ( dom esb))) = ( dom (WB .edgeSeq() )) by A19, Th5

                  .= ( Seg ( len (WB .edgeSeq() ))) by FINSEQ_1:def 3;

                  consider n be odd Element of NAT such that

                   A27: n <= ( len WB) and

                   A28: (WB . n) = v by A25, Lm45;

                  set W2 = (WB9 .cut (1,n));

                  ( len W2) = n by A27, Lm22;

                  then

                  consider naa1 be even Element of NAT such that

                   A29: naa1 = (n - 1) and

                   A30: ( len (W2 .edgeSeq() )) = (naa1 div 2) by Lm42;

                  ((2 * 0 ) + 1) <= n by ABIAN: 12;

                  then

                   A31: W2 is_Walk_from ((W1 .first() ),(W1 .last() )) by A4, A14, A27, A28, Lm16;

                  2 divides naa1 by PEPIN: 22;

                  then

                   A32: (2 * (naa1 div 2)) = naa1 by NAT_D: 3;

                  now

                    assume (naa1 div 2) > ( len (WB .edgeSeq() ));

                    then naa1 > (2 * ( len (WB .edgeSeq() ))) by A32, XREAL_1: 68;

                    then (naa1 + 1) > ((2 * ( len (WB .edgeSeq() ))) + 1) by XREAL_1: 8;

                    hence contradiction by A27, A29, Def15;

                  end;

                  then ( Seg (naa1 div 2)) c= ( dom ( Sgm ( dom esb))) by A26, FINSEQ_1: 5;

                  then

                   A33: ( dom (( Sgm ( dom esb)) | ( Seg (naa1 div 2)))) = ( Seg (naa1 div 2)) by RELAT_1: 62;

                  reconsider ses = (( Sgm ( dom esb)) | ( Seg (naa1 div 2))) as FinSequence;

                  

                   A34: ses is one-to-one by A24, FUNCT_1: 52;

                  set es = (esb | ( rng (( Sgm ( dom esb)) | ( Seg (naa1 div 2)))));

                  reconsider es as Subset of (WA .edgeSeq() ) by FINSEQ_6: 153;

                  for x be object st x in es holds x in (W1 .edgeSeq() ) by A9, TARSKI:def 3;

                  then

                  reconsider es as Subset of (W1 .edgeSeq() ) by TARSKI:def 3;

                  reconsider esbes1 = (esb \ es) as Function;

                  now

                    let z be object;

                    

                     A35: ( rng (( Sgm ( dom esb)) | ( Seg (naa1 div 2)))) c= ( rng ( Sgm ( dom esb))) by RELAT_1: 70;

                    assume z in ( rng (( Sgm ( dom esb)) | ( Seg (naa1 div 2))));

                    then z in ( rng ( Sgm ( dom esb))) by A35;

                    hence z in ( dom esb) by A23, FINSEQ_1:def 13;

                  end;

                  then ( rng (( Sgm ( dom esb)) | ( Seg (naa1 div 2)))) c= ( dom esb) by TARSKI:def 3;

                  then

                   A36: ( dom es) = ( rng (( Sgm ( dom esb)) | ( Seg (naa1 div 2)))) by RELAT_1: 62;

                   A37:

                  now

                    let a,b be Nat;

                    assume that

                     A38: a in ( dom es) and

                     A39: b in ( dom esbes1);

                    consider xa be object such that

                     A40: xa in ( dom ses) and

                     A41: (ses . xa) = a by A36, A38, FUNCT_1:def 3;

                    reconsider xa as Element of NAT by A40;

                    

                     A42: xa in ( Seg (naa1 div 2)) by A40, RELAT_1: 57;

                    then

                     A43: 1 <= xa by FINSEQ_1: 1;

                    

                     A44: [b, (esbes1 . b)] in (esb \ es) by A39, FUNCT_1: 1;

                    then

                     A45: [b, (esbes1 . b)] in esb by XBOOLE_0:def 5;

                    then b in ( dom esb) by FUNCT_1: 1;

                    then b in ( rng ( Sgm ( dom esb))) by A23, FINSEQ_1:def 13;

                    then

                    consider xb be object such that

                     A46: xb in ( dom ( Sgm ( dom esb))) and

                     A47: (( Sgm ( dom esb)) . xb) = b by FUNCT_1:def 3;

                    reconsider xb as Element of NAT by A46;

                    

                     A48: 1 <= xb by A26, A46, FINSEQ_1: 1;

                    

                     A49: xa <= (naa1 div 2) by A42, FINSEQ_1: 1;

                     A50:

                    now

                      assume xb <= xa;

                      then xb <= (naa1 div 2) by A49, XXREAL_0: 2;

                      then

                       A51: xb in ( Seg (naa1 div 2)) by A48, FINSEQ_1: 1;

                       [xb, b] in ( Sgm ( dom esb)) by A46, A47, FUNCT_1: 1;

                      then [xb, b] in ses by A51, RELAT_1:def 11;

                      then b in ( rng ses) by XTUPLE_0:def 13;

                      then [b, (esbes1 . b)] in es by A45, RELAT_1:def 11;

                      hence contradiction by A44, XBOOLE_0:def 5;

                    end;

                    xb <= ( len (WB .edgeSeq() )) by A26, A46, FINSEQ_1: 1;

                    then xb in ( dom ( Seq esb)) by A19, A48, FINSEQ_3: 25;

                    then xb in ( dom ( Sgm ( dom esb))) by Th5;

                    then

                     A52: xb <= ( len ( Sgm ( dom esb))) by FINSEQ_3: 25;

                    a = (( Sgm ( dom esb)) . xa) by A40, A41, FUNCT_1: 47;

                    hence a < b by A23, A47, A43, A52, A50, FINSEQ_1:def 13;

                  end;

                  ( len ses) = (naa1 div 2) by A33, FINSEQ_1:def 3;

                  then ( card ( dom es)) = (naa1 div 2) by A36, A34, FINSEQ_4: 62;

                  then ( card es) = (naa1 div 2) by CARD_1: 62;

                  then

                   A53: ( len ( Seq es)) = ( len (W2 .edgeSeq() )) by A30, Th4;

                  

                   A54: es c= esb by RELAT_1: 59;

                  now

                    let z be object;

                    hereby

                      assume

                       A55: z in esb;

                      now

                        per cases ;

                          suppose z in es;

                          hence z in (es \/ (esb \ es)) by XBOOLE_0:def 3;

                        end;

                          suppose not z in es;

                          then z in (esb \ es) by A55, XBOOLE_0:def 5;

                          hence z in (es \/ (esb \ es)) by XBOOLE_0:def 3;

                        end;

                      end;

                      hence z in (es \/ (esb \ es));

                    end;

                    assume

                     A56: z in (es \/ (esb \ es));

                    now

                      per cases by A56, XBOOLE_0:def 3;

                        suppose z in es;

                        hence z in esb by A54;

                      end;

                        suppose z in (esb \ es);

                        hence z in esb by XBOOLE_0:def 5;

                      end;

                    end;

                    hence z in esb;

                  end;

                  then esb = (es \/ (esb \ es)) by TARSKI: 2;

                  then

                   A57: ( dom esb) = (( dom es) \/ ( dom (esb \ es))) by XTUPLE_0: 23;

                  (esb \ es) c= esb by XBOOLE_1: 36;

                  then ( dom (esb \ es)) c= ( dom esb) by RELAT_1: 11;

                  then

                   A58: ( dom (esb \ es)) c= ( Seg k) by A23, XBOOLE_1: 1;

                  ( dom es) c= ( dom esb) by A54, RELAT_1: 11;

                  then ( dom es) c= ( Seg k) by A23, XBOOLE_1: 1;

                  then

                   A59: ( Sgm ( dom esb)) = (( Sgm ( dom es)) ^ ( Sgm ( dom (esb \ es)))) by A57, A58, A37, FINSEQ_3: 42;

                  

                   A60: (W2 .edgeSeq() ) c= (WB .edgeSeq() ) by Lm43;

                  then

                   A61: ( dom (W2 .edgeSeq() )) c= ( dom ( Seq esb)) by A19, RELAT_1: 11;

                  

                   A62: ( Seq es) = (es * ( Sgm ( dom es))) by FINSEQ_1:def 14;

                  now

                    let x be Nat;

                    assume that

                     A63: 1 <= x and

                     A64: x <= ( len (W2 .edgeSeq() ));

                    

                     A65: x in ( dom (W2 .edgeSeq() )) by A63, A64, FINSEQ_3: 25;

                    then x in ( dom ( Sgm ( dom esb))) by A21, A61, FUNCT_1: 11;

                    then

                     A66: [x, (( Sgm ( dom esb)) . x)] in ( Sgm ( dom esb)) by FUNCT_1: 1;

                    x in ( Seg (naa1 div 2)) by A30, A63, A64, FINSEQ_1: 1;

                    then [x, (( Sgm ( dom esb)) . x)] in ses by A66, RELAT_1:def 11;

                    then

                     A67: (( Sgm ( dom esb)) . x) in ( rng ses) by XTUPLE_0:def 13;

                    (( Sgm ( dom esb)) . x) in ( dom esb) by A21, A61, A65, FUNCT_1: 11;

                    then [(( Sgm ( dom esb)) . x), (esb . (( Sgm ( dom esb)) . x))] in esb by FUNCT_1: 1;

                    then

                     A68: [(( Sgm ( dom esb)) . x), (esb . (( Sgm ( dom esb)) . x))] in es by A67, RELAT_1:def 11;

                     [x, ((W2 .edgeSeq() ) . x)] in (W2 .edgeSeq() ) by A65, FUNCT_1: 1;

                    

                    then

                     A69: ((W2 .edgeSeq() ) . x) = (( Seq esb) . x) by A19, A60, FUNCT_1: 1

                    .= (esb . (( Sgm ( dom esb)) . x)) by A21, A61, A65, FUNCT_1: 12;

                    

                     A70: x in ( dom ( Seq es)) by A53, A63, A64, FINSEQ_3: 25;

                    then x in ( dom ( Sgm ( dom es))) by Th5;

                    then (( Sgm ( dom esb)) . x) = (( Sgm ( dom es)) . x) by A59, FINSEQ_1:def 7;

                    then (es . (( Sgm ( dom es)) . x)) = (esb . (( Sgm ( dom esb)) . x)) by A68, FUNCT_1: 1;

                    hence ((W2 .edgeSeq() ) . x) = (( Seq es) . x) by A62, A69, A70, FUNCT_1: 12;

                  end;

                  then (W2 .edgeSeq() ) = ( Seq es) by A53, FINSEQ_1: 14;

                  then

                  reconsider W2 as Path of W1 by A31, Def32;

                  take W2;

                  thus W2 is directed;

                end;

                  suppose

                   A71: not v in (WB .vertices() );

                  set es = (esb +* ((k + 1) .--> e));

                  set W2 = (WB .addEdge e);

                   A72:

                  now

                    let m,n be Nat;

                    assume that

                     A73: m in ( dom esb) and

                     A74: n in {(k + 1)};

                    

                     A75: n = (k + 1) by A74, TARSKI:def 1;

                    m <= k by A23, A73, FINSEQ_1: 1;

                    hence m < n by A75, NAT_1: 13;

                  end;

                  

                   A76: ( dom ((k + 1) .--> e)) = {(k + 1)};

                  then

                   A77: ( dom es) = (( dom esb) \/ {(k + 1)}) by FUNCT_4:def 1;

                  now

                    let x be object;

                    assume

                     A78: x in ( dom es);

                    now

                      per cases by A77, A78, XBOOLE_0:def 3;

                        suppose x in ( dom esb);

                        then

                         A79: x in ( Seg k) by A22;

                        then

                        reconsider x9 = x as Element of NAT ;

                        x9 <= k by A79, FINSEQ_1: 1;

                        then

                         A80: x9 <= (k + 1) by NAT_1: 12;

                        1 <= x9 by A79, FINSEQ_1: 1;

                        hence x in ( Seg (k + 1)) by A80, FINSEQ_1: 1;

                      end;

                        suppose

                         A81: x in {(k + 1)};

                        

                         A82: 1 <= (k + 1) by NAT_1: 12;

                        x = (k + 1) by A81, TARSKI:def 1;

                        hence x in ( Seg (k + 1)) by A82, FINSEQ_1: 1;

                      end;

                    end;

                    hence x in ( Seg (k + 1));

                  end;

                  then

                   A83: ( dom es) c= ( Seg (k + 1)) by TARSKI:def 3;

                  then

                  reconsider es as FinSubsequence by FINSEQ_1:def 12;

                  now

                    let z be object;

                    assume

                     A84: z in es;

                    then

                    consider x,y be object such that

                     A85: z = [x, y] by RELAT_1:def 1;

                    

                     A86: x in ( dom es) by A84, A85, FUNCT_1: 1;

                    

                     A87: (es . x) = y by A84, A85, FUNCT_1: 1;

                    now

                      per cases ;

                        suppose

                         A88: x in ( dom ((k + 1) .--> e));

                        then

                        reconsider x9 = x as Element of NAT by A76;

                        

                         A89: x = (k + 1) by A88, TARSKI:def 1;

                        then

                         A90: 1 <= x9 by NAT_1: 12;

                        then

                         A91: x in ( dom (W1 .edgeSeq() )) by A3, A89, FINSEQ_3: 25;

                        y = (((k + 1) .--> e) . x) by A77, A86, A87, A88, FUNCT_4:def 1;

                        then

                         A92: y = e by A89, FUNCOP_1: 72;

                        ((W1 .edgeSeq() ) . x) = (W1 . (2 * (k + 1))) by A3, A89, A90, Def15

                        .= (W1 . (((2 * k) + 1) + 1));

                        hence z in (W1 .edgeSeq() ) by A85, A92, A91, FUNCT_1: 1;

                      end;

                        suppose

                         A93: not x in ( dom ((k + 1) .--> e));

                        then

                         A94: x in ( dom esb) by A77, A86, XBOOLE_0:def 3;

                        y = (esb . x) by A77, A86, A87, A93, FUNCT_4:def 1;

                        then [x, y] in esb by A94, FUNCT_1: 1;

                        then [x, y] in (WA .edgeSeq() );

                        hence z in (W1 .edgeSeq() ) by A9, A85;

                      end;

                    end;

                    hence z in (W1 .edgeSeq() );

                  end;

                  then

                  reconsider es as Subset of (W1 .edgeSeq() ) by TARSKI:def 3;

                   {(k + 1)} c= ( Seg (k + 1)) by A77, A83, XBOOLE_1: 11;

                  

                  then

                   A95: ( Sgm ( dom es)) = (( Sgm ( dom esb)) ^ ( Sgm {(k + 1)})) by A23, A77, A72, FINSEQ_3: 42

                  .= (( Sgm ( dom esb)) ^ <*(k + 1)*>) by FINSEQ_3: 44;

                  now

                    assume (( dom esb) /\ ( dom ((k + 1) .--> e))) <> {} ;

                    then

                    consider x be object such that

                     A96: x in (( dom esb) /\ ( dom ((k + 1) .--> e))) by XBOOLE_0:def 1;

                    x in {(k + 1)} by A96;

                    then

                     A97: x = (k + 1) by TARSKI:def 1;

                    x in ( dom esb) by A96, XBOOLE_0:def 4;

                    then (k + 1) <= (k + 0 ) by A23, A97, FINSEQ_1: 1;

                    hence contradiction by XREAL_1: 6;

                  end;

                  then

                   A98: ( dom esb) misses ( dom ((k + 1) .--> e)) by XBOOLE_0:def 7;

                  

                   A99: (W2 .edgeSeq() ) = (( Seq esb) ^ <*e*>) by A16, A19, Lm44;

                  

                  then

                   A100: ( len (W2 .edgeSeq() )) = (( len ( Seq esb)) + ( len <*e*>)) by FINSEQ_1: 22

                  .= (( len ( Seq esb)) + 1) by FINSEQ_1: 39

                  .= (( card esb) + 1) by Th4;

                  

                   A101: ( len ( Seq es)) = ( card es) by Th4

                  .= (( card esb) + ( card ((k + 1) .--> e))) by A98, PRE_CIRC: 22

                  .= (( card esb) + ( card { [(k + 1), e]})) by FUNCT_4: 82

                  .= ( len (W2 .edgeSeq() )) by A100, CARD_1: 30;

                  now

                    

                     A102: ( Seq es) = (es * ( Sgm ( dom es))) by FINSEQ_1:def 14;

                    let n be Nat;

                    assume that

                     A103: 1 <= n and

                     A104: n <= ( len (W2 .edgeSeq() ));

                    n in ( dom ( Seq es)) by A101, A103, A104, FINSEQ_3: 25;

                    then

                     A105: (( Seq es) . n) = (es . (( Sgm ( dom es)) . n)) by A102, FUNCT_1: 12;

                    

                     A106: ( Seq esb) = (esb * ( Sgm ( dom esb))) by FINSEQ_1:def 14;

                    

                     A107: n in ( dom (W2 .edgeSeq() )) by A103, A104, FINSEQ_3: 25;

                    now

                      per cases by A99, A107, FINSEQ_1: 25;

                        suppose

                         A108: n in ( dom ( Seq esb));

                        then n in ( dom ( Sgm ( dom esb))) by A106, FUNCT_1: 11;

                        then

                         A109: (( Sgm ( dom es)) . n) = (( Sgm ( dom esb)) . n) by A95, FINSEQ_1:def 7;

                        

                         A110: (( Sgm ( dom esb)) . n) in ( dom esb) by A106, A108, FUNCT_1: 11;

                        ((W2 .edgeSeq() ) . n) = (( Seq esb) . n) by A99, A108, FINSEQ_1:def 7

                        .= (esb . (( Sgm ( dom esb)) . n)) by A106, A108, FUNCT_1: 12;

                        hence ((W2 .edgeSeq() ) . n) = (( Seq es) . n) by A98, A105, A110, A109, FUNCT_4: 16;

                      end;

                        suppose ex m be Nat st m in ( dom <*e*>) & n = (( len ( Seq esb)) + m);

                        then

                        consider m be Nat such that

                         A111: m in ( dom <*e*>) and

                         A112: n = (( len ( Seq esb)) + m);

                        m in {1} by A111, FINSEQ_1: 2, FINSEQ_1:def 8;

                        then

                         A113: m = 1 by TARSKI:def 1;

                        

                         A114: (k + 1) in ( dom ((k + 1) .--> e)) by TARSKI:def 1;

                        then

                         A115: (k + 1) in (( dom esb) \/ ( dom ((k + 1) .--> e))) by XBOOLE_0:def 3;

                        ( len ( Sgm ( dom esb))) = ( card ( dom esb)) by A23, FINSEQ_3: 39

                        .= ( card esb) by CARD_1: 62

                        .= ( len ( Seq esb)) by Th4;

                        then (( Seq es) . n) = (es . (k + 1)) by A95, A105, A112, A113, FINSEQ_1: 42;

                        

                        then

                         A116: (( Seq es) . n) = (((k + 1) .--> e) . (k + 1)) by A114, A115, FUNCT_4:def 1

                        .= e by FUNCOP_1: 72;

                        ((W2 .edgeSeq() ) . n) = ( <*e*> . 1) by A99, A111, A112, A113, FINSEQ_1:def 7

                        .= e by FINSEQ_1:def 8;

                        hence ((W2 .edgeSeq() ) . n) = (( Seq es) . n) by A116;

                      end;

                    end;

                    hence ((W2 .edgeSeq() ) . n) = (( Seq es) . n);

                  end;

                  then

                   A117: (W2 .edgeSeq() ) = ( Seq es) by A101, FINSEQ_1: 14;

                  W2 is_Walk_from ((W1 .first() ),(W1 .last() )) by A4, A8, A6, A10, A13, A12, Lm52;

                  then

                  reconsider W2 as Path of W1 by A16, A18, A71, A117, Def32, Lm68;

                  take W2;

                  thus W2 is directed by A8, A6, A10, A12, Lm52;

                end;

              end;

              hence ex W2 be Path of W1 st W2 is directed;

            end;

          end;

          hence ex W2 be Path of W1 st W2 is directed;

        end;

        then

         A118: for k be Nat st P[k] holds P[(k + 1)];

        now

          let W1 be DWalk of G;

          set W2 = the Path of W1;

          assume (W1 .length() ) = 0 ;

          then ( len W1) = ((2 * 0 ) + 1) by Def15;

          then

           A119: ( len W2) <= 1 by Lm72;

          take W2;

          1 <= ( len W2) by ABIAN: 12;

          then ( len W2) = 1 by A119, XXREAL_0: 1;

          then W2 is trivial by Lm55;

          then ex v be Vertex of G st W2 = (G .walkOf v) by Lm56;

          hence W2 is directed;

        end;

        then

         A120: P[ 0 ];

        for k be Nat holds P[k] from NAT_1:sch 2( A120, A118);

        hence thesis by A1;

      end;

    end

    definition

      let G be _Graph, W be DWalk of G;

      mode DWalk of W is directed Subwalk of W;

      mode DTrail of W is directed Trail of W;

      mode DPath of W is directed Path of W;

    end

    definition

      let G be _Graph;

      :: GLIB_001:def33

      func G .allWalks() -> non empty Subset of ((( the_Vertices_of G) \/ ( the_Edges_of G)) * ) equals the set of all W where W be Walk of G;

      coherence

      proof

        set IT = the set of all W where W be Walk of G;

         A1:

        now

          let x be object;

          assume x in IT;

          then ex W be Walk of G st x = W;

          hence x in ((( the_Vertices_of G) \/ ( the_Edges_of G)) * ) by FINSEQ_1:def 11;

        end;

        (G .walkOf the Element of ( the_Vertices_of G)) in IT;

        hence thesis by A1, TARSKI:def 3;

      end;

    end

    definition

      let G be _Graph;

      :: GLIB_001:def34

      func G .allTrails() -> non empty Subset of (G .allWalks() ) equals the set of all W where W be Trail of G;

      coherence

      proof

        set IT = the set of all W where W be Trail of G;

         A1:

        now

          let e be object;

          assume e in IT;

          then ex W be Trail of G st W = e;

          hence e in (G .allWalks() );

        end;

        (G .walkOf the Element of ( the_Vertices_of G)) in IT;

        hence thesis by A1, TARSKI:def 3;

      end;

    end

    definition

      let G be _Graph;

      :: GLIB_001:def35

      func G .allPaths() -> non empty Subset of (G .allTrails() ) equals the set of all W where W be Path of G;

      coherence

      proof

        set IT = the set of all W where W be Path of G;

         A1:

        now

          let e be object;

          assume e in IT;

          then ex W be Path of G st e = W;

          hence e in (G .allTrails() );

        end;

        (G .walkOf the Element of ( the_Vertices_of G)) in IT;

        hence thesis by A1, TARSKI:def 3;

      end;

    end

    definition

      let G be _Graph;

      :: GLIB_001:def36

      func G .allDWalks() -> non empty Subset of (G .allWalks() ) equals the set of all W where W be DWalk of G;

      coherence

      proof

        set IT = the set of all W where W be directed Walk of G;

         A1:

        now

          let e be object;

          assume e in IT;

          then ex W be directed Walk of G st e = W;

          hence e in (G .allWalks() );

        end;

        (G .walkOf the Element of ( the_Vertices_of G)) in IT;

        hence thesis by A1, TARSKI:def 3;

      end;

    end

    definition

      let G be _Graph;

      :: GLIB_001:def37

      func G .allDTrails() -> non empty Subset of (G .allTrails() ) equals the set of all W where W be DTrail of G;

      coherence

      proof

        set IT = the set of all W where W be DTrail of G;

         A1:

        now

          let e be object;

          assume e in IT;

          then ex W be DTrail of G st e = W;

          hence e in (G .allTrails() );

        end;

        (G .walkOf the Element of ( the_Vertices_of G)) in IT;

        hence thesis by A1, TARSKI:def 3;

      end;

    end

    definition

      let G be _Graph;

      :: GLIB_001:def38

      func G .allDPaths() -> non empty Subset of (G .allDTrails() ) equals the set of all W where W be directed Path of G;

      coherence

      proof

        set IT = the set of all W where W be DPath of G;

         A1:

        now

          let e be object;

          assume e in IT;

          then ex W be DPath of G st e = W;

          hence e in (G .allDTrails() );

        end;

        (G .walkOf the Element of ( the_Vertices_of G)) in IT;

        hence thesis by A1, TARSKI:def 3;

      end;

    end

    registration

      let G be _finite _Graph;

      cluster (G .allTrails() ) -> finite;

      correctness

      proof

        set D = (( the_Vertices_of G) \/ ( the_Edges_of G));

        set X = { x where x be Element of (D * ) : ( len x) <= ((2 * (G .size() )) + 1) };

         A1:

        now

          let W be Trail of G;

          consider f be Function such that

           A2: ( dom f) = (W .edgeSeq() ) & for x be object st x in (W .edgeSeq() ) holds (f . x) = (x `2 ) from FUNCT_1:sch 3;

          now

            

             A3: (W .edgeSeq() ) is one-to-one by Def27;

            let x1,x2 be object;

            assume that

             A4: x1 in ( dom f) and

             A5: x2 in ( dom f) and

             A6: (f . x1) = (f . x2);

            consider a1,b1 be object such that

             A7: x1 = [a1, b1] by A2, A4, RELAT_1:def 1;

            

             A8: a1 in ( dom (W .edgeSeq() )) by A2, A4, A7, FUNCT_1: 1;

            

             A9: (f . x2) = (x2 `2 ) by A2, A5;

            

             A10: ((W .edgeSeq() ) . a1) = b1 by A2, A4, A7, FUNCT_1: 1;

            consider a2,b2 be object such that

             A11: x2 = [a2, b2] by A2, A5, RELAT_1:def 1;

            

             A12: a2 in ( dom (W .edgeSeq() )) by A2, A5, A11, FUNCT_1: 1;

            (f . x1) = (x1 `2 ) by A2, A4;

            

            then

             A13: b1 = (f . x1) by A7

            .= b2 by A6, A9, A11;

            then ((W .edgeSeq() ) . a2) = b1 by A2, A5, A11, FUNCT_1: 1;

            hence x1 = x2 by A7, A11, A13, A3, A8, A10, A12, FUNCT_1:def 4;

          end;

          then

           A14: f is one-to-one by FUNCT_1:def 4;

          now

            let y be object;

            assume y in ( rng f);

            then

            consider x be object such that

             A15: x in ( dom f) and

             A16: (f . x) = y by FUNCT_1:def 3;

            consider a,b be object such that

             A17: x = [a, b] by A2, A15, RELAT_1:def 1;

            y = (x `2 ) by A2, A15, A16;

            then y = b by A17;

            then y in ( rng (W .edgeSeq() )) by A2, A15, A17, XTUPLE_0:def 13;

            hence y in ( the_Edges_of G);

          end;

          then ( rng f) c= ( the_Edges_of G) by TARSKI:def 3;

          then ( Segm ( card (W .edgeSeq() ))) c= ( Segm ( card ( the_Edges_of G))) by A2, A14, CARD_1: 10;

          then ( len (W .edgeSeq() )) <= ( card ( the_Edges_of G)) by NAT_1: 39;

          then ( len (W .edgeSeq() )) <= (G .size() ) by GLIB_000:def 25;

          then (2 * ( len (W .edgeSeq() ))) <= (2 * (G .size() )) by XREAL_1: 64;

          then ((2 * ( len (W .edgeSeq() ))) + 1) <= ((2 * (G .size() )) + 1) by XREAL_1: 7;

          hence ( len W) <= ((2 * (G .size() )) + 1) by Def15;

        end;

        now

          let e be object;

          assume e in (G .allTrails() );

          then

          consider W be Trail of G such that

           A18: W = e;

          

           A19: ( len W) <= ((2 * (G .size() )) + 1) by A1;

          e is Element of (D * ) by A18, FINSEQ_1:def 11;

          hence e in X by A18, A19;

        end;

        then (G .allTrails() ) c= X by TARSKI:def 3;

        hence thesis by FINSET_1: 1, GRAPH_5: 3;

      end;

    end

    definition

      let G be _Graph, X be non empty Subset of (G .allWalks() );

      :: original: Element

      redefine

      mode Element of X -> Walk of G ;

      coherence

      proof

        let x be Element of X;

        x in the set of all W where W be Walk of G;

        then ex y be Walk of G st y = x;

        hence thesis;

      end;

    end

    definition

      let G be _Graph, X be non empty Subset of (G .allTrails() );

      :: original: Element

      redefine

      mode Element of X -> Trail of G ;

      coherence

      proof

        let x be Element of X;

        x in the set of all W where W be Trail of G;

        then ex y be Trail of G st y = x;

        hence thesis;

      end;

    end

    definition

      let G be _Graph, X be non empty Subset of (G .allPaths() );

      :: original: Element

      redefine

      mode Element of X -> Path of G ;

      coherence

      proof

        let x be Element of X;

        x in the set of all W where W be Path of G;

        then ex y be Path of G st y = x;

        hence thesis;

      end;

    end

    definition

      let G be _Graph, X be non empty Subset of (G .allDWalks() );

      :: original: Element

      redefine

      mode Element of X -> DWalk of G ;

      coherence

      proof

        let x be Element of X;

        x in the set of all W where W be DWalk of G;

        then ex y be DWalk of G st y = x;

        hence thesis;

      end;

    end

    definition

      let G be _Graph, X be non empty Subset of (G .allDTrails() );

      :: original: Element

      redefine

      mode Element of X -> DTrail of G ;

      coherence

      proof

        let x be Element of X;

        x in the set of all W where W be DTrail of G;

        then ex y be DTrail of G st y = x;

        hence thesis;

      end;

    end

    definition

      let G be _Graph, X be non empty Subset of (G .allDPaths() );

      :: original: Element

      redefine

      mode Element of X -> DPath of G ;

      coherence

      proof

        let x be Element of X;

        x in the set of all W where W be DPath of G;

        then ex y be DPath of G st y = x;

        hence thesis;

      end;

    end

    begin

    reserve G,G1,G2 for _Graph;

    reserve W,W1,W2 for Walk of G;

    reserve e,x,y,z for set;

    reserve v for Vertex of G;

    reserve n,m for Element of NAT ;

    theorem :: GLIB_001:7

    for n be odd Element of NAT st n <= ( len W) holds (W . n) in ( the_Vertices_of G) by Lm1;

    theorem :: GLIB_001:8

    

     Th7: for n be even Element of NAT st n in ( dom W) holds (W . n) in ( the_Edges_of G)

    proof

      let n be even Element of NAT ;

      assume

       A1: n in ( dom W);

      then 1 <= n by FINSEQ_3: 25;

      then

      reconsider naa1 = (n - 1) as odd Element of NAT by INT_1: 5;

      n <= ( len W) by A1, FINSEQ_3: 25;

      then naa1 < (( len W) - 0 ) by XREAL_1: 15;

      then (W . (naa1 + 1)) Joins ((W . naa1),(W . (naa1 + 2)),G) by Def3;

      hence thesis by GLIB_000:def 13;

    end;

    theorem :: GLIB_001:9

    for n be even Element of NAT st n in ( dom W) holds ex naa1 be odd Element of NAT st naa1 = (n - 1) & (n - 1) in ( dom W) & (n + 1) in ( dom W) & (W . n) Joins ((W . naa1),(W . (n + 1)),G) by Lm2;

    theorem :: GLIB_001:10

    

     Th9: for n be odd Element of NAT st n < ( len W) holds (W . (n + 1)) in ((W .vertexAt n) .edgesInOut() )

    proof

      let n be odd Element of NAT ;

      assume

       A1: n < ( len W);

      then

       A2: (W .vertexAt n) = (W . n) by Def8;

      (W . (n + 1)) Joins ((W . n),(W . (n + 2)),G) by A1, Def3;

      hence thesis by A2, GLIB_000: 62;

    end;

    theorem :: GLIB_001:11

    

     Th10: for n be odd Element of NAT st 1 < n & n <= ( len W) holds (W . (n - 1)) in ((W .vertexAt n) .edgesInOut() )

    proof

      let n be odd Element of NAT ;

      assume that

       A1: 1 < n and

       A2: n <= ( len W);

      reconsider naa1 = (n - 1) as even Element of NAT by A1, INT_1: 5;

      (1 + 1) <= n by A1, NAT_1: 13;

      then

       A3: ((1 + 1) - 1) <= (n - 1) by XREAL_1: 13;

      (n - 1) <= (( len W) - 0 ) by A2, XREAL_1: 13;

      then naa1 in ( dom W) by A3, FINSEQ_3: 25;

      then

      consider n5 be odd Element of NAT such that

       A4: n5 = (naa1 - 1) and

       A5: (naa1 - 1) in ( dom W) and (naa1 + 1) in ( dom W) and

       A6: (W . naa1) Joins ((W . n5),(W . (naa1 + 1)),G) by Lm2;

      n5 <= ( len W) by A4, A5, FINSEQ_3: 25;

      then (W . n5) = (W .vertexAt n5) by Def8;

      then (W . (n - 1)) Joins ((W .vertexAt n5),(W .vertexAt n),G) by A2, A6, Def8;

      hence thesis by GLIB_000: 14, GLIB_000: 62;

    end;

    theorem :: GLIB_001:12

    for n be odd Element of NAT st n < ( len W) holds n in ( dom W) & (n + 1) in ( dom W) & (n + 2) in ( dom W)

    proof

      let n be odd Element of NAT ;

      

       A1: 1 <= n by ABIAN: 12;

      

       A2: 1 <= (n + 1) by NAT_1: 12;

      

       A3: 1 <= (n + 2) by NAT_1: 12;

      assume

       A4: n < ( len W);

      then

       A5: (n + 1) <= ( len W) by NAT_1: 13;

      (n + 2) <= ( len W) by A4, Th1;

      hence thesis by A4, A1, A2, A3, A5, FINSEQ_3: 25;

    end;

    theorem :: GLIB_001:13

    

     Th12: ( len (G .walkOf v)) = 1 & ((G .walkOf v) . 1) = v & ((G .walkOf v) .first() ) = v & ((G .walkOf v) .last() ) = v & (G .walkOf v) is_Walk_from (v,v)

    proof

      thus

       A1: ( len (G .walkOf v)) = 1 & ((G .walkOf v) . 1) = v by FINSEQ_1: 40;

      thus

       A2: ((G .walkOf v) .first() ) = v by FINSEQ_1: 40;

      thus ((G .walkOf v) .last() ) = v by A1;

      hence thesis by A2;

    end;

    theorem :: GLIB_001:14

    

     Th13: for e,x,y be object holds e Joins (x,y,G) implies ( len (G .walkOf (x,e,y))) = 3

    proof

      let e,x,y be object;

      assume e Joins (x,y,G);

      then (G .walkOf (x,e,y)) = <*x, e, y*> by Def5;

      hence thesis by FINSEQ_1: 45;

    end;

    theorem :: GLIB_001:15

    

     Th14: for e,x,y be object holds e Joins (x,y,G) implies ((G .walkOf (x,e,y)) .first() ) = x & ((G .walkOf (x,e,y)) .last() ) = y & (G .walkOf (x,e,y)) is_Walk_from (x,y)

    proof

      let e,x,y be object;

      set W = (G .walkOf (x,e,y));

      assume e Joins (x,y,G);

      then

       A1: W = <*x, e, y*> by Def5;

      hence

       A2: (W .first() ) = x by FINSEQ_1: 45;

      ( len W) = 3 by A1, FINSEQ_1: 45;

      hence (W .last() ) = y by A1, FINSEQ_1: 45;

      hence thesis by A2;

    end;

    theorem :: GLIB_001:16

    for W1 be Walk of G1, W2 be Walk of G2 st W1 = W2 holds (W1 .first() ) = (W2 .first() ) & (W1 .last() ) = (W2 .last() );

    theorem :: GLIB_001:17

    for x,y be object holds W is_Walk_from (x,y) iff (W . 1) = x & (W . ( len W)) = y;

    theorem :: GLIB_001:18

    for x,y be object holds W is_Walk_from (x,y) implies x is Vertex of G & y is Vertex of G;

    theorem :: GLIB_001:19

    for x,y be object holds for W1 be Walk of G1, W2 be Walk of G2 st W1 = W2 holds W1 is_Walk_from (x,y) iff W2 is_Walk_from (x,y);

    theorem :: GLIB_001:20

    for W1 be Walk of G1, W2 be Walk of G2 st W1 = W2 holds for n be Element of NAT holds (W1 .vertexAt n) = (W2 .vertexAt n)

    proof

      let W1 be Walk of G1, W2 be Walk of G2;

      assume

       A1: W1 = W2;

      let n be Element of NAT ;

      now

        per cases ;

          suppose

           A2: n is odd & n <= ( len W1);

          

          hence (W1 .vertexAt n) = (W2 . n) by A1, Def8

          .= (W2 .vertexAt n) by A1, A2, Def8;

        end;

          suppose

           A3: not (n is odd & n <= ( len W1));

          

          hence (W1 .vertexAt n) = (W1 .first() ) by Def8

          .= (W2 .first() ) by A1

          .= (W2 .vertexAt n) by A1, A3, Def8;

        end;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:21

    ( len W) = ( len (W .reverse() )) & ( dom W) = ( dom (W .reverse() )) & ( rng W) = ( rng (W .reverse() )) by FINSEQ_5: 57, FINSEQ_5:def 3;

    theorem :: GLIB_001:22

    

     Th21: (W .first() ) = ((W .reverse() ) .last() ) & (W .last() ) = ((W .reverse() ) .first() )

    proof

      ( len W) = ( len (W .reverse() )) by FINSEQ_5:def 3;

      hence (W .first() ) = ((W .reverse() ) .last() ) by FINSEQ_5: 62;

      thus thesis by FINSEQ_5: 62;

    end;

    theorem :: GLIB_001:23

    

     Th22: for x,y be object holds W is_Walk_from (x,y) iff (W .reverse() ) is_Walk_from (y,x)

    proof

      let x,y be object;

      

       A1: ( len W) = ( len (W .reverse() )) by FINSEQ_5:def 3;

      thus W is_Walk_from (x,y) implies (W .reverse() ) is_Walk_from (y,x) by A1, FINSEQ_5: 62;

      assume

       A2: (W .reverse() ) is_Walk_from (y,x);

      then ((W .reverse() ) . 1) = y;

      then

       A3: (W . ( len W)) = y by FINSEQ_5: 62;

      ((W .reverse() ) . ( len (W .reverse() ))) = x by A2;

      then (W . 1) = x by A1, FINSEQ_5: 62;

      hence thesis by A3;

    end;

    theorem :: GLIB_001:24

    

     Th23: n in ( dom W) implies (W . n) = ((W .reverse() ) . ((( len W) - n) + 1)) & ((( len W) - n) + 1) in ( dom (W .reverse() ))

    proof

      set rn = ((( len W) - n) + 1);

      assume

       A1: n in ( dom W);

      then n <= ( len W) by FINSEQ_3: 25;

      then

      reconsider rn as Element of NAT by FINSEQ_5: 1;

      n in ( Seg ( len W)) by A1, FINSEQ_1:def 3;

      then ((( len W) - n) + 1) in ( Seg ( len W)) by FINSEQ_5: 2;

      then

       A2: rn in ( Seg ( len (W .reverse() ))) by FINSEQ_5:def 3;

      then rn in ( dom (W .reverse() )) by FINSEQ_1:def 3;

      then ((W .reverse() ) . rn) = (W . ((( len W) - rn) + 1)) by FINSEQ_5:def 3;

      hence thesis by A2, FINSEQ_1:def 3;

    end;

    theorem :: GLIB_001:25

    n in ( dom (W .reverse() )) implies ((W .reverse() ) . n) = (W . ((( len W) - n) + 1)) & ((( len W) - n) + 1) in ( dom W) by Lm8;

    ::$Canceled

    theorem :: GLIB_001:27

    for W1 be Walk of G1, W2 be Walk of G2 st W1 = W2 holds (W1 .reverse() ) = (W2 .reverse() );

    theorem :: GLIB_001:28

    (W1 .last() ) = (W2 .first() ) implies (( len (W1 .append W2)) + 1) = (( len W1) + ( len W2)) by Lm9;

    theorem :: GLIB_001:29

    (W1 .last() ) = (W2 .first() ) implies ( len W1) <= ( len (W1 .append W2)) & ( len W2) <= ( len (W1 .append W2)) by Lm10;

    theorem :: GLIB_001:30

    (W1 .last() ) = (W2 .first() ) implies ((W1 .append W2) .first() ) = (W1 .first() ) & ((W1 .append W2) .last() ) = (W2 .last() ) & (W1 .append W2) is_Walk_from ((W1 .first() ),(W2 .last() )) by Lm11;

    theorem :: GLIB_001:31

    

     Th29: for x,y,z be object holds W1 is_Walk_from (x,y) & W2 is_Walk_from (y,z) implies (W1 .append W2) is_Walk_from (x,z) by Lm11;

    theorem :: GLIB_001:32

    n in ( dom W1) implies ((W1 .append W2) . n) = (W1 . n) & n in ( dom (W1 .append W2)) by Lm12;

    theorem :: GLIB_001:33

    (W1 .last() ) = (W2 .first() ) implies for n be Element of NAT st n < ( len W2) holds ((W1 .append W2) . (( len W1) + n)) = (W2 . (n + 1)) & (( len W1) + n) in ( dom (W1 .append W2)) by Lm13;

    theorem :: GLIB_001:34

    n in ( dom (W1 .append W2)) implies n in ( dom W1) or ex k be Element of NAT st k < ( len W2) & n = (( len W1) + k) by Lm14;

    theorem :: GLIB_001:35

    

     Th33: for W1A,W1B be Walk of G1, W2A,W2B be Walk of G2 st W1A = W2A & W1B = W2B holds (W1A .append W1B) = (W2A .append W2B)

    proof

      let W1A,W1B be Walk of G1, W2A,W2B be Walk of G2;

      assume that

       A1: W1A = W2A and

       A2: W1B = W2B;

      now

        per cases ;

          suppose

           A3: (W1A .last() ) = (W1B .first() );

          then

           A4: (W2A .last() ) = (W2B .first() ) by A1, A2;

          

          thus (W1A .append W1B) = (W1A ^' W1B) by A3, Def10

          .= (W2A .append W2B) by A1, A2, A4, Def10;

        end;

          suppose

           A5: (W1A .last() ) <> (W1B .first() );

          then

           A6: (W2A .last() ) <> (W2B .first() ) by A1, A2;

          

          thus (W1A .append W1B) = W2A by A1, A5, Def10

          .= (W2A .append W2B) by A6, Def10;

        end;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:36

    for m,n be odd Element of NAT st m <= n & n <= ( len W) holds (( len (W .cut (m,n))) + m) = (n + 1) & for i be Element of NAT st i < ( len (W .cut (m,n))) holds ((W .cut (m,n)) . (i + 1)) = (W . (m + i)) & (m + i) in ( dom W) by Lm15;

    theorem :: GLIB_001:37

    for m,n be odd Element of NAT st m <= n & n <= ( len W) holds ((W .cut (m,n)) .first() ) = (W . m) & ((W .cut (m,n)) .last() ) = (W . n) & (W .cut (m,n)) is_Walk_from ((W . m),(W . n)) by Lm16;

    theorem :: GLIB_001:38

    for m,n,o be odd Element of NAT st m <= n & n <= o & o <= ( len W) holds ((W .cut (m,n)) .append (W .cut (n,o))) = (W .cut (m,o)) by Lm17;

    theorem :: GLIB_001:39

    (W .cut (1,( len W))) = W by Lm18;

    theorem :: GLIB_001:40

    

     Th38: for n be odd Element of NAT st n < ( len W) holds (G .walkOf ((W . n),(W . (n + 1)),(W . (n + 2)))) = (W .cut (n,(n + 2)))

    proof

      let n be odd Element of NAT ;

      set v1 = (W . n), e = (W . (n + 1)), v2 = (W . (n + 2));

      set W1 = (G .walkOf (v1,e,v2)), W2 = (W .cut (n,(n + 2)));

      assume

       A1: n < ( len W);

      then

       A2: (n + 2) <= ( len W) by Th1;

      

       A3: n <= (n + 2) by Th1;

      then

       A4: (( len (W .cut (n,(n + 2)))) + n) = (1 + (2 + n)) by A2, Lm15;

      

       A5: e Joins (v1,v2,G) by A1, Def3;

      then

       A6: (G .walkOf (v1,e,v2)) = <*v1, e, v2*> by Def5;

      

       A7: ( len W1) = 3 by A5, Th13;

      then

       A8: ( dom W1) = ( Seg 3) by FINSEQ_1:def 3;

      now

        let x be Nat;

        assume

         A9: x in ( dom W1);

        then 1 <= x by FINSEQ_3: 25;

        then

        reconsider xaa1 = (x - 1) as Element of NAT by INT_1: 5;

        x <= 3 by A7, A9, FINSEQ_3: 25;

        then

         A10: xaa1 < (3 - 0 ) by XREAL_1: 15;

        (xaa1 + 1) = x;

        then

         A11: (W2 . x) = (W . (n + xaa1)) by A3, A2, A4, A10, Lm15;

        now

          per cases by A8, A9, ENUMSET1:def 1, FINSEQ_3: 1;

            suppose x = 1;

            hence (W1 . x) = (W2 . x) by A6, A11, FINSEQ_1: 45;

          end;

            suppose x = 2;

            hence (W1 . x) = (W2 . x) by A6, A11, FINSEQ_1: 45;

          end;

            suppose x = 3;

            hence (W1 . x) = (W2 . x) by A6, A11, FINSEQ_1: 45;

          end;

        end;

        hence (W1 . x) = (W2 . x);

      end;

      hence thesis by A4, A7, FINSEQ_2: 9;

    end;

    theorem :: GLIB_001:41

    

     Th39: for m,n be odd Element of NAT st m <= n & n < ( len W) holds ((W .cut (m,n)) .addEdge (W . (n + 1))) = (W .cut (m,(n + 2)))

    proof

      let m,n be odd Element of NAT ;

      set W1 = (W .cut (m,n));

      set e = (W . (n + 1));

      assume that

       A1: m <= n and

       A2: n < ( len W);

      

       A3: (n + 2) <= ( len W) by A2, Th1;

      

       A4: (W1 .last() ) = (W . n) by A1, A2, Lm16;

      then e Joins ((W1 .last() ),(W . (n + 2)),G) by A2, Def3;

      then e Joins ((W1 .last() ),(W .vertexAt (n + 2)),G) by A3, Def8;

      then ((W1 .last() ) .adj e) = (W .vertexAt (n + 2)) by GLIB_000: 66;

      then ((W1 .last() ) .adj e) = (W . (n + 2)) by A3, Def8;

      then

       A5: (G .walkOf ((W1 .last() ),e,((W1 .last() ) .adj e))) = (W .cut (n,(n + 2))) by A2, A4, Th38;

      n <= (n + 2) by Th1;

      hence thesis by A1, A3, A5, Lm17;

    end;

    theorem :: GLIB_001:42

    for n be odd Element of NAT st n <= ( len W) holds (W .cut (n,n)) = <*(W .vertexAt n)*> by Lm19;

    theorem :: GLIB_001:43

    m is odd & m <= n implies ((W .cut (1,n)) .cut (1,m)) = (W .cut (1,m)) by Lm20;

    theorem :: GLIB_001:44

    for m,n be odd Element of NAT st m <= n & n <= ( len W1) & (W1 .last() ) = (W2 .first() ) holds ((W1 .append W2) .cut (m,n)) = (W1 .cut (m,n)) by Lm21;

    theorem :: GLIB_001:45

    for m be odd Element of NAT st m <= ( len W) holds ( len (W .cut (1,m))) = m by Lm22;

    theorem :: GLIB_001:46

    for m be odd Element of NAT , x be Element of NAT st x in ( dom (W .cut (1,m))) & m <= ( len W) holds ((W .cut (1,m)) . x) = (W . x) by Lm23;

    theorem :: GLIB_001:47

    for m,n be odd Element of NAT , i be Element of NAT st m <= n & n <= ( len W) & i in ( dom (W .cut (m,n))) holds ((W .cut (m,n)) . i) = (W . ((m + i) - 1)) & ((m + i) - 1) in ( dom W)

    proof

      let m,n be odd Element of NAT , i be Element of NAT ;

      assume that

       A1: m <= n and

       A2: n <= ( len W) and

       A3: i in ( dom (W .cut (m,n)));

      1 <= i by A3, FINSEQ_3: 25;

      then

      reconsider iaa1 = (i - 1) as Element of NAT by INT_1: 5;

      i <= ( len (W .cut (m,n))) by A3, FINSEQ_3: 25;

      then

       A4: iaa1 < (( len (W .cut (m,n))) - 0 ) by XREAL_1: 15;

      (iaa1 + 1) = i;

      then ((W .cut (m,n)) . i) = (W . (m + iaa1)) by A1, A2, A4, Lm15;

      hence thesis by A1, A2, A4, Lm15;

    end;

    theorem :: GLIB_001:48

    

     Th46: for W1 be Walk of G1, W2 be Walk of G2, m,n be Element of NAT st W1 = W2 holds (W1 .cut (m,n)) = (W2 .cut (m,n))

    proof

      let W1 be Walk of G1, W2 be Walk of G2, m,n be Element of NAT ;

      assume

       A1: W1 = W2;

      now

        per cases ;

          suppose

           A2: m is odd & n is odd & m <= n & n <= ( len W1);

          

          hence (W1 .cut (m,n)) = ((m,n) -cut W2) by A1, Def11

          .= (W2 .cut (m,n)) by A1, A2, Def11;

        end;

          suppose

           A3: not (m is odd & n is odd & m <= n & n <= ( len W1));

          

          hence (W1 .cut (m,n)) = W2 by A1, Def11

          .= (W2 .cut (m,n)) by A1, A3, Def11;

        end;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:49

    for m,n be odd Element of NAT st m <= n & n <= ( len W) & (W . m) = (W . n) holds (( len (W .remove (m,n))) + n) = (( len W) + m) by Lm24;

    theorem :: GLIB_001:50

    W is_Walk_from (x,y) implies (W .remove (m,n)) is_Walk_from (x,y) by Lm25;

    theorem :: GLIB_001:51

    ( len (W .remove (m,n))) <= ( len W) by Lm26;

    theorem :: GLIB_001:52

    (W .remove (m,m)) = W by Lm27;

    theorem :: GLIB_001:53

    for m,n be odd Element of NAT st m <= n & n <= ( len W) & (W . m) = (W . n) holds ((W .cut (1,m)) .last() ) = ((W .cut (n,( len W))) .first() ) by Lm28;

    theorem :: GLIB_001:54

    for m,n be odd Element of NAT st m <= n & n <= ( len W) & (W . m) = (W . n) holds for x be Element of NAT st x in ( Seg m) holds ((W .remove (m,n)) . x) = (W . x) by Lm29;

    theorem :: GLIB_001:55

    for m,n be odd Element of NAT st m <= n & n <= ( len W) & (W . m) = (W . n) holds for x be Element of NAT st m <= x & x <= ( len (W .remove (m,n))) holds ((W .remove (m,n)) . x) = (W . ((x - m) + n)) & ((x - m) + n) is Element of NAT & ((x - m) + n) <= ( len W) by Lm30;

    theorem :: GLIB_001:56

    for m,n be odd Element of NAT st m <= n & n <= ( len W) & (W . m) = (W . n) holds ( len (W .remove (m,n))) = ((( len W) + m) - n) by Lm31;

    theorem :: GLIB_001:57

    

     Th55: for m be Element of NAT st (W . m) = (W .last() ) holds (W .remove (m,( len W))) = (W .cut (1,m))

    proof

      let m be Element of NAT ;

      assume

       A1: (W . m) = (W .last() );

      now

        per cases ;

          suppose

           A2: m is odd & m <= ( len W);

          then

           A3: (( len (W .remove (m,( len W)))) + ( len W)) = (( len W) + m) by A1, Lm24;

          then

           A4: ( len (W .remove (m,( len W)))) = ( len (W .cut (1,m))) by A2, Lm22;

          now

            let k be Nat;

            assume that

             A5: 1 <= k and

             A6: k <= ( len (W .remove (m,( len W))));

            

             A7: k in ( dom (W .cut (1,m))) by A4, A5, A6, FINSEQ_3: 25;

            k in ( Seg m) by A3, A5, A6, FINSEQ_1: 1;

            

            hence ((W .remove (m,( len W))) . k) = (W . k) by A1, A2, Lm29

            .= ((W .cut (1,m)) . k) by A2, A7, Lm23;

          end;

          hence thesis by A4, FINSEQ_1: 14;

        end;

          suppose

           A8: not (m is odd & m <= ( len W));

          then (W .cut (1,m)) = W by Def11;

          hence thesis by A8, Def12;

        end;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:58

    for m be Element of NAT st (W .first() ) = (W . m) holds (W .remove (1,m)) = (W .cut (m,( len W))) by Lm32;

    theorem :: GLIB_001:59

    ((W .remove (m,n)) .first() ) = (W .first() ) & ((W .remove (m,n)) .last() ) = (W .last() ) by Lm33;

    theorem :: GLIB_001:60

    for m,n be odd Element of NAT , x be Element of NAT st m <= n & n <= ( len W) & (W . m) = (W . n) & x in ( dom (W .remove (m,n))) holds x in ( Seg m) or m <= x & x <= ( len (W .remove (m,n))) by Lm34;

    theorem :: GLIB_001:61

    for W1 be Walk of G1, W2 be Walk of G2, m,n be Element of NAT st W1 = W2 holds (W1 .remove (m,n)) = (W2 .remove (m,n))

    proof

      let W1 be Walk of G1, W2 be Walk of G2, m,n be Element of NAT ;

      assume

       A1: W1 = W2;

      now

        per cases ;

          suppose

           A2: m is odd & n is odd & m <= n & n <= ( len W1) & (W1 . m) = (W1 . n);

          

           A3: (W1 .cut (n,( len W1))) = (W2 .cut (n,( len W2))) by A1, Th46;

          

           A4: (W1 .cut (1,m)) = (W2 .cut (1,m)) by A1, Th46;

          (W1 .remove (m,n)) = ((W1 .cut (1,m)) .append (W1 .cut (n,( len W1)))) by A2, Def12;

          then (W1 .remove (m,n)) = ((W2 .cut (1,m)) .append (W2 .cut (n,( len W2)))) by A4, A3, Th33;

          hence thesis by A1, A2, Def12;

        end;

          suppose

           A5: not (m is odd & n is odd & m <= n & n <= ( len W1) & (W1 . m) = (W1 . n));

          

          hence (W1 .remove (m,n)) = W2 by A1, Def12

          .= (W2 .remove (m,n)) by A1, A5, Def12;

        end;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:62

    for e,x be object holds e Joins ((W .last() ),x,G) implies (W .addEdge e) = (W ^ <*e, x*>) by Lm35;

    theorem :: GLIB_001:63

    for e,x be object holds e Joins ((W .last() ),x,G) implies ((W .addEdge e) .first() ) = (W .first() ) & ((W .addEdge e) .last() ) = x & (W .addEdge e) is_Walk_from ((W .first() ),x) by Lm36;

    theorem :: GLIB_001:64

    for e,x be object holds e Joins ((W .last() ),x,G) implies ( len (W .addEdge e)) = (( len W) + 2) by Lm37;

    theorem :: GLIB_001:65

    for e,x be object holds e Joins ((W .last() ),x,G) implies ((W .addEdge e) . (( len W) + 1)) = e & ((W .addEdge e) . (( len W) + 2)) = x & for n be Element of NAT st n in ( dom W) holds ((W .addEdge e) . n) = (W . n) by Lm38;

    theorem :: GLIB_001:66

    for e,x,y,z be object holds W is_Walk_from (x,y) & e Joins (y,z,G) implies (W .addEdge e) is_Walk_from (x,z) by Lm39;

    theorem :: GLIB_001:67

    

     Th65: 1 <= ( len (W .vertexSeq() ))

    proof

      now

        assume ( len (W .vertexSeq() )) < 1;

        then ( len (W .vertexSeq() )) < ( 0 + 1);

        then ( len (W .vertexSeq() )) = 0 by NAT_1: 13;

        then (( len W) + 1) = (2 * 0 ) by Def14;

        hence contradiction;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:68

    

     Th66: for n be odd Element of NAT st n <= ( len W) holds ((2 * ((n + 1) div 2)) - 1) = n & 1 <= ((n + 1) div 2) & ((n + 1) div 2) <= ( len (W .vertexSeq() ))

    proof

      let n be odd Element of NAT ;

      assume

       A1: n <= ( len W);

      set m = ((n + 1) div 2);

      2 divides (n + 1) by PEPIN: 22;

      then

       A2: (2 * m) = (n + 1) by NAT_D: 3;

      hence ((2 * m) - 1) = n;

       A3:

      now

        assume m < 1;

        then m < ( 0 + 1);

        then m = 0 by NAT_1: 13;

        hence contradiction by A2;

      end;

      then

      reconsider maa1 = (m - 1) as Element of NAT by INT_1: 5;

      thus 1 <= m by A3;

      now

        assume ( len (W .vertexSeq() )) < m;

        then ( len (W .vertexSeq() )) < (maa1 + 1);

        then ( len (W .vertexSeq() )) <= maa1 by NAT_1: 13;

        then (2 * ( len (W .vertexSeq() ))) <= (2 * maa1) by NAT_1: 4;

        then (( len W) + 1) <= ((2 * m) - (2 * 1)) by Def14;

        then ((( len W) + 1) + 2) <= (((n + 1) - 2) + 2) by A2, XREAL_1: 7;

        then ((( len W) + 1) + 2) < ((n + 1) + 1) by NAT_1: 13;

        then ((( len W) + 3) - 3) < ((n + 2) - 2) by XREAL_1: 14;

        hence contradiction by A1;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:69

    ((G .walkOf v) .vertexSeq() ) = <*v*>

    proof

      set VS = ((G .walkOf v) .vertexSeq() );

      (( len (G .walkOf v)) + 1) = (2 * ( len VS)) by Def14;

      then

       A1: (1 + 1) = (2 * ( len VS)) by Th12;

      

      then (VS . 1) = ((G .walkOf v) . ((2 * 1) - 1)) by Def14

      .= v by Th12;

      hence thesis by A1, FINSEQ_1: 40;

    end;

    theorem :: GLIB_001:70

    

     Th68: for e,x,y be object holds e Joins (x,y,G) implies ((G .walkOf (x,e,y)) .vertexSeq() ) = <*x, y*>

    proof

      let e,x,y be object;

      set W = (G .walkOf (x,e,y));

      assume e Joins (x,y,G);

      then

       A1: W = <*x, e, y*> by Def5;

      (( len W) + 1) = (2 * ( len (W .vertexSeq() ))) by Def14;

      then

       A2: (3 + 1) = (2 * ( len (W .vertexSeq() ))) by A1, FINSEQ_1: 45;

      then ((W .vertexSeq() ) . 2) = (W . ((2 * 2) - 1)) by Def14;

      then

       A3: ((W .vertexSeq() ) . 2) = y by A1, FINSEQ_1: 45;

      ((W .vertexSeq() ) . 1) = (W . ((2 * 1) - 1)) by A2, Def14;

      then ((W .vertexSeq() ) . 1) = x by A1, FINSEQ_1: 45;

      hence thesis by A2, A3, FINSEQ_1: 44;

    end;

    theorem :: GLIB_001:71

    (W .first() ) = ((W .vertexSeq() ) . 1) & (W .last() ) = ((W .vertexSeq() ) . ( len (W .vertexSeq() )))

    proof

      

       A1: (( len W) + 1) = (2 * ( len (W .vertexSeq() ))) by Def14;

      

       A2: 1 <= ( len (W .vertexSeq() )) by Th65;

      then ((W .vertexSeq() ) . 1) = (W . ((2 * 1) - 1)) by Def14;

      hence ((W .vertexSeq() ) . 1) = (W .first() );

      ((W .vertexSeq() ) . ( len (W .vertexSeq() ))) = (W . ((2 * ( len (W .vertexSeq() ))) - 1)) by A2, Def14;

      hence thesis by A1;

    end;

    theorem :: GLIB_001:72

    for n be odd Element of NAT st n <= ( len W) holds (W .vertexAt n) = ((W .vertexSeq() ) . ((n + 1) div 2))

    proof

      let n be odd Element of NAT ;

      set m = ((n + 1) div 2);

      assume

       A1: n <= ( len W);

      then

       A2: ((2 * m) - 1) = n by Th66;

      

       A3: m <= ( len (W .vertexSeq() )) by A1, Th66;

      

       A4: 1 <= m by A1, Th66;

      (W .vertexAt n) = (W . n) by A1, Def8;

      hence thesis by A2, A4, A3, Def14;

    end;

    theorem :: GLIB_001:73

    

     Th71: n in ( dom (W .vertexSeq() )) iff ((2 * n) - 1) in ( dom W)

    proof

      hereby

        assume

         A1: n in ( dom (W .vertexSeq() ));

        then

         A2: 1 <= n by FINSEQ_3: 25;

        then 1 <= (n + n) by NAT_1: 12;

        then

         A3: ((2 * n) - 1) is Element of NAT by INT_1: 5;

        n <= ( len (W .vertexSeq() )) by A1, FINSEQ_3: 25;

        then (2 * n) <= (2 * ( len (W .vertexSeq() ))) by XREAL_1: 64;

        then (2 * n) <= (( len W) + 1) by Def14;

        then

         A4: ((2 * n) - 1) <= ((( len W) + 1) - 1) by XREAL_1: 13;

        (2 * 1) <= (2 * n) by A2, XREAL_1: 64;

        then (2 - 1) <= ((2 * n) - 1) by XREAL_1: 13;

        hence ((2 * n) - 1) in ( dom W) by A4, A3, FINSEQ_3: 25;

      end;

      assume

       A5: ((2 * n) - 1) in ( dom W);

      then

      reconsider 2naa1 = ((2 * n) - 1) as Element of NAT ;

      1 <= 2naa1 by A5, FINSEQ_3: 25;

      then (1 + 1) <= (((2 * n) - 1) + 1) by XREAL_1: 7;

      then (2 * 1) <= (2 * n);

      then

       A6: 1 <= n by XREAL_1: 68;

      2naa1 <= ( len W) by A5, FINSEQ_3: 25;

      then (((2 * n) - 1) + 1) <= (( len W) + 1) by XREAL_1: 7;

      then (2 * n) <= (2 * ( len (W .vertexSeq() ))) by Def14;

      then n <= ( len (W .vertexSeq() )) by XREAL_1: 68;

      hence thesis by A6, FINSEQ_3: 25;

    end;

    theorem :: GLIB_001:74

    ((W .cut (1,n)) .vertexSeq() ) c= (W .vertexSeq() )

    proof

      now

        per cases ;

          suppose

           A1: n is odd & 1 <= n & n <= ( len W);

          set f = ((W .cut (1,n)) .vertexSeq() );

          now

            let v be object;

            assume

             A2: v in f;

            then

            consider x,y be object such that

             A3: v = [x, y] by RELAT_1:def 1;

            

             A4: y = (f . x) by A2, A3, FUNCT_1: 1;

            

             A5: x in ( dom f) by A2, A3, FUNCT_1: 1;

            then

            reconsider x as Element of NAT ;

            

             A6: x <= ( len f) by A5, FINSEQ_3: 25;

            

             A7: ((2 * x) - 1) in ( dom (W .cut (1,n))) by A5, Th71;

            then ((2 * x) - 1) <= ( len (W .cut (1,n))) by FINSEQ_3: 25;

            then ((2 * x) - 1) <= n by A1, Lm22;

            then

             A8: ((2 * x) - 1) <= ( len W) by A1, XXREAL_0: 2;

            1 <= ((2 * x) - 1) by A7, FINSEQ_3: 25;

            then ((2 * x) - 1) in ( dom W) by A7, A8, FINSEQ_3: 25;

            then

             A9: x in ( dom (W .vertexSeq() )) by Th71;

            then

             A10: x <= ( len (W .vertexSeq() )) by FINSEQ_3: 25;

            1 <= x by A5, FINSEQ_3: 25;

            then y = ((W .cut (1,n)) . ((2 * x) - 1)) by A4, A6, Def14;

            then

             A11: y = (W . ((2 * x) - 1)) by A1, A7, Lm23;

            1 <= x by A9, FINSEQ_3: 25;

            then ((W .vertexSeq() ) . x) = y by A11, A10, Def14;

            hence v in (W .vertexSeq() ) by A3, A9, FUNCT_1: 1;

          end;

          hence thesis by TARSKI:def 3;

        end;

          suppose not (n is odd & 1 <= n & n <= ( len W));

          hence thesis by Def11;

        end;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:75

    

     Th73: e Joins ((W .last() ),x,G) implies ((W .addEdge e) .vertexSeq() ) = ((W .vertexSeq() ) ^ <*x*>)

    proof

      set W2 = (W .addEdge e), W3 = ((W .vertexSeq() ) ^ <*x*>);

      assume

       A1: e Joins ((W .last() ),x,G);

      then ( len W2) = (( len W) + 2) by Lm37;

      then

       A2: ((( len W) + 2) + 1) = (2 * ( len (W2 .vertexSeq() ))) by Def14;

      ( len W3) = (( len (W .vertexSeq() )) + ( len <*x*>)) by FINSEQ_1: 22;

      then ( len W3) = (( len (W .vertexSeq() )) + 1) by FINSEQ_1: 39;

      then (2 * ( len W3)) = ((2 * ( len (W .vertexSeq() ))) + (2 * 1));

      

      then

       A3: (2 * ( len W3)) = ((( len W) + 1) + 2) by Def14

      .= (2 * ( len (W2 .vertexSeq() ))) by A2;

      now

        let k be Nat;

        assume that

         A4: 1 <= k and

         A5: k <= ( len (W2 .vertexSeq() ));

        

         A6: ((W2 .vertexSeq() ) . k) = (W2 . ((2 * k) - 1)) by A4, A5, Def14;

        

         A7: k in ( dom W3) by A3, A4, A5, FINSEQ_3: 25;

        now

          per cases by A7, FINSEQ_1: 25;

            suppose

             A8: k in ( dom (W .vertexSeq() ));

            then

             A9: ((2 * k) - 1) in ( dom W) by Th71;

            

             A10: 1 <= k by A8, FINSEQ_3: 25;

            

             A11: k <= ( len (W .vertexSeq() )) by A8, FINSEQ_3: 25;

            (W3 . k) = ((W .vertexSeq() ) . k) by A8, FINSEQ_1:def 7;

            then (W3 . k) = (W . ((2 * k) - 1)) by A10, A11, Def14;

            hence ((W2 .vertexSeq() ) . k) = (W3 . k) by A1, A6, A9, Lm38;

          end;

            suppose ex n be Nat st n in ( dom <*x*>) & k = (( len (W .vertexSeq() )) + n);

            then

            consider n be Nat such that

             A12: n in ( dom <*x*>) and

             A13: k = (( len (W .vertexSeq() )) + n);

            n in ( Seg 1) by A12, FINSEQ_1: 38;

            then

             A14: n = 1 by FINSEQ_1: 2, TARSKI:def 1;

            

            then

             A15: (2 * k) = ((2 * ( len (W .vertexSeq() ))) + (2 * 1)) by A13

            .= ((( len W) + 1) + 2) by Def14

            .= ((( len W) + 2) + 1);

            (W3 . k) = ( <*x*> . 1) by A12, A13, A14, FINSEQ_1:def 7

            .= x by FINSEQ_1:def 8;

            hence ((W2 .vertexSeq() ) . k) = (W3 . k) by A1, A6, A15, Lm38;

          end;

        end;

        hence ((W2 .vertexSeq() ) . k) = (W3 . k);

      end;

      hence thesis by A3, FINSEQ_1: 14;

    end;

    theorem :: GLIB_001:76

    

     Th74: for W1 be Walk of G1, W2 be Walk of G2 st W1 = W2 holds (W1 .vertexSeq() ) = (W2 .vertexSeq() )

    proof

      let W1 be Walk of G1, W2 be Walk of G2;

      set VS1 = (W1 .vertexSeq() ), VS2 = (W2 .vertexSeq() );

      assume

       A1: W1 = W2;

      now

        thus ( len VS1) = ( len VS1);

        

         A2: (2 * ( len VS1)) = (( len W2) + 1) by A1, Def14

        .= (2 * ( len VS2)) by Def14;

        hence ( len VS2) = ( len VS1);

        let x be Nat;

        assume

         A3: x in ( dom VS1);

        then

         A4: x <= ( len VS2) by A2, FINSEQ_3: 25;

        

         A5: 1 <= x by A3, FINSEQ_3: 25;

        x <= ( len VS1) by A3, FINSEQ_3: 25;

        

        hence (VS1 . x) = (W2 . ((2 * x) - 1)) by A1, A5, Def14

        .= (VS2 . x) by A5, A4, Def14;

      end;

      hence thesis by FINSEQ_2: 9;

    end;

    theorem :: GLIB_001:77

    for n be even Element of NAT st 1 <= n & n <= ( len W) holds (n div 2) in ( dom (W .edgeSeq() )) & (W . n) = ((W .edgeSeq() ) . (n div 2)) by Lm40;

    theorem :: GLIB_001:78

    n in ( dom (W .edgeSeq() )) iff (2 * n) in ( dom W) by Lm41;

    theorem :: GLIB_001:79

    for n be Element of NAT st n in ( dom (W .edgeSeq() )) holds ((W .edgeSeq() ) . n) in ( the_Edges_of G)

    proof

      let n be Element of NAT ;

      assume n in ( dom (W .edgeSeq() ));

      then ((W .edgeSeq() ) . n) in ( rng (W .edgeSeq() )) by FUNCT_1:def 3;

      hence thesis;

    end;

    theorem :: GLIB_001:80

    ex lenWaa1 be even Element of NAT st lenWaa1 = (( len W) - 1) & ( len (W .edgeSeq() )) = (lenWaa1 div 2) by Lm42;

    theorem :: GLIB_001:81

    ((W .cut (1,n)) .edgeSeq() ) c= (W .edgeSeq() ) by Lm43;

    theorem :: GLIB_001:82

    for e,x be object holds e Joins ((W .last() ),x,G) implies ((W .addEdge e) .edgeSeq() ) = ((W .edgeSeq() ) ^ <*e*>) by Lm44;

    theorem :: GLIB_001:83

    

     Th81: for e,x,y be object holds e Joins (x,y,G) iff ((G .walkOf (x,e,y)) .edgeSeq() ) = <*e*>

    proof

      let e,x,y be object;

      set W = (G .walkOf (x,e,y));

      hereby

        assume

         A1: e Joins (x,y,G);

        then ( len W) = 3 by Th13;

        then

         A2: (2 + 1) = ((2 * ( len (W .edgeSeq() ))) + 1) by Def15;

        

         A3: W = <*x, e, y*> by A1, Def5;

         A4:

        now

          let k be Nat;

          assume that

           A5: 1 <= k and

           A6: k <= ( len (W .edgeSeq() ));

          

           A7: k = 1 by A2, A5, A6, XXREAL_0: 1;

          

          then ((W .edgeSeq() ) . k) = (W . (2 * 1)) by A6, Def15

          .= e by A3, FINSEQ_1: 45;

          hence ((W .edgeSeq() ) . k) = ( <*e*> . k) by A7, FINSEQ_1:def 8;

        end;

        ( len (W .edgeSeq() )) = ( len <*e*>) by A2, FINSEQ_1: 39;

        hence (W .edgeSeq() ) = <*e*> by A4, FINSEQ_1: 14;

      end;

      assume (W .edgeSeq() ) = <*e*>;

      then ( len (W .edgeSeq() )) = 1 by FINSEQ_1: 39;

      then

       A8: ( len W) = ((2 * 1) + 1) by Def15;

      now

        assume not e Joins (x,y,G);

        then W = (G .walkOf the Element of ( the_Vertices_of G)) by Def5;

        hence contradiction by A8, Th12;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:84

    ((W .reverse() ) .edgeSeq() ) = ( Rev (W .edgeSeq() ))

    proof

      set W1 = ((W .reverse() ) .edgeSeq() ), W2 = ( Rev (W .edgeSeq() ));

      

       A1: ( len W) = ( len (W .reverse() )) by FINSEQ_5:def 3;

      ( len W) = ((2 * ( len (W .edgeSeq() ))) + 1) by Def15;

      then

       A2: ((2 * ( len (W .edgeSeq() ))) + 1) = ((2 * ( len W1)) + 1) by A1, Def15;

       A3:

      now

        let n be Nat;

        assume that

         A4: 1 <= n and

         A5: n <= ( len W1);

        

         A6: (W1 . n) = ((W .reverse() ) . (2 * n)) by A4, A5, Def15;

        set rn = ((( len (W .edgeSeq() )) - n) + 1);

        reconsider rn as Element of NAT by A2, A5, FINSEQ_5: 1;

        

         A7: n in ( Seg ( len (W .edgeSeq() ))) by A2, A4, A5, FINSEQ_1: 1;

        then

         A8: rn in ( Seg ( len (W .edgeSeq() ))) by FINSEQ_5: 2;

        then

         A9: 1 <= rn by FINSEQ_1: 1;

        

         A10: n in ( dom (W .edgeSeq() )) by A7, FINSEQ_1:def 3;

        then

         A11: (2 * n) in ( dom W) by Lm41;

        then

         A12: 1 <= (2 * n) by FINSEQ_3: 25;

        

         A13: rn <= ( len (W .edgeSeq() )) by A8, FINSEQ_1: 1;

        

         A14: ((( len W) - (2 * n)) + 1) = ((((2 * ( len (W .edgeSeq() ))) + 1) - (2 * n)) + 1) by Def15

        .= (2 * rn);

        (2 * n) <= ( len (W .reverse() )) by A1, A11, FINSEQ_3: 25;

        then

         A15: (2 * n) in ( dom (W .reverse() )) by A12, FINSEQ_3: 25;

        (W2 . n) = ((W .edgeSeq() ) . rn) by A10, FINSEQ_5: 58

        .= (W . (2 * rn)) by A9, A13, Def15;

        hence (W1 . n) = (W2 . n) by A15, A6, A14, Lm8;

      end;

      ( len W1) = ( len W2) by A2, FINSEQ_5:def 3;

      hence thesis by A3, FINSEQ_1: 14;

    end;

    theorem :: GLIB_001:85

    (W1 .last() ) = (W2 .first() ) implies ((W1 .append W2) .edgeSeq() ) = ((W1 .edgeSeq() ) ^ (W2 .edgeSeq() ))

    proof

      set W3 = (W1 .append W2), W4 = ((W1 .edgeSeq() ) ^ (W2 .edgeSeq() ));

      

       A1: ( len W4) = (( len (W1 .edgeSeq() )) + ( len (W2 .edgeSeq() ))) by FINSEQ_1: 22;

      assume

       A2: (W1 .last() ) = (W2 .first() );

      then (( len W3) + 1) = (( len W1) + ( len W2)) by Lm9;

      

      then (( len W3) + 1) = (( len W1) + ((2 * ( len (W2 .edgeSeq() ))) + 1)) by Def15

      .= ((( len W1) + (2 * ( len (W2 .edgeSeq() )))) + 1);

      

      then

       A3: ((2 * ( len (W3 .edgeSeq() ))) + 1) = ((2 * ( len (W2 .edgeSeq() ))) + ( len W1)) by Def15

      .= ((2 * ( len (W2 .edgeSeq() ))) + ((2 * ( len (W1 .edgeSeq() ))) + 1)) by Def15

      .= (((2 * ( len (W2 .edgeSeq() ))) + (2 * ( len (W1 .edgeSeq() )))) + 1);

      

       A4: W3 = (W1 ^' W2) by A2, Def10;

      now

        let n be Nat;

        assume that

         A5: 1 <= n and

         A6: n <= ( len (W3 .edgeSeq() ));

        reconsider n1 = n as Element of NAT by ORDINAL1:def 12;

        

         A7: ((W3 .edgeSeq() ) . n1) = (W3 . (2 * n1)) by A5, A6, Def15;

        

         A8: n1 in ( dom W4) by A1, A3, A5, A6, FINSEQ_3: 25;

        now

          per cases by A8, FINSEQ_1: 25;

            suppose

             A9: n in ( dom (W1 .edgeSeq() ));

            then

             A10: n <= ( len (W1 .edgeSeq() )) by FINSEQ_3: 25;

            

             A11: 1 <= n by A9, FINSEQ_3: 25;

            

             A12: (2 * n) in ( dom W1) by A9, Lm41;

            then

             A13: 1 <= (2 * n) by FINSEQ_3: 25;

            

             A14: (2 * n) <= ( len W1) by A12, FINSEQ_3: 25;

            (W4 . n) = ((W1 .edgeSeq() ) . n) by A9, FINSEQ_1:def 7

            .= (W1 . (2 * n)) by A11, A10, Def15;

            hence ((W3 .edgeSeq() ) . n) = (W4 . n) by A4, A7, A13, A14, FINSEQ_6: 140;

          end;

            suppose ex k be Nat st k in ( dom (W2 .edgeSeq() )) & n = (( len (W1 .edgeSeq() )) + k);

            then

            consider k be Nat such that

             A15: k in ( dom (W2 .edgeSeq() )) and

             A16: n = (( len (W1 .edgeSeq() )) + k);

            ((2 * n) + 1) = ((2 * k) + ((2 * ( len (W1 .edgeSeq() ))) + 1)) by A16

            .= ((2 * k) + ( len W1)) by Def15;

            then

             A17: (2 * n) = (( len W1) + ((2 * k) - 1));

            

             A18: 1 <= k by A15, FINSEQ_3: 25;

            then 1 <= (k + k) by NAT_1: 12;

            then

            reconsider 2kaa1 = ((2 * k) - 1) as Element of NAT by INT_1: 5;

            

             A19: k <= ( len (W2 .edgeSeq() )) by A15, FINSEQ_3: 25;

            then (2 * k) <= (2 * ( len (W2 .edgeSeq() ))) by XREAL_1: 64;

            then (2 * k) < ((2 * ( len (W2 .edgeSeq() ))) + 1) by NAT_1: 13;

            then (2 * k) < ( len W2) by Def15;

            then

             A20: 2kaa1 < (( len W2) - 0 ) by XREAL_1: 14;

            (1 + 1) <= (k + k) by A18, XREAL_1: 7;

            then ((1 + 1) - 1) <= 2kaa1 by XREAL_1: 13;

            

            then

             A21: (W3 . (2 * n)) = (W2 . (2kaa1 + 1)) by A4, A17, A20, FINSEQ_6: 141

            .= (W2 . (2 * k));

            (W4 . n) = ((W2 .edgeSeq() ) . k) by A15, A16, FINSEQ_1:def 7

            .= (W2 . (2 * k)) by A18, A19, Def15;

            hence ((W3 .edgeSeq() ) . n) = (W4 . n) by A5, A6, A21, Def15;

          end;

        end;

        hence ((W3 .edgeSeq() ) . n) = (W4 . n);

      end;

      hence thesis by A1, A3, FINSEQ_1: 14;

    end;

    theorem :: GLIB_001:86

    

     Th84: for W1 be Walk of G1, W2 be Walk of G2 st W1 = W2 holds (W1 .edgeSeq() ) = (W2 .edgeSeq() )

    proof

      let W1 be Walk of G1, W2 be Walk of G2;

      set ES1 = (W1 .edgeSeq() ), ES2 = (W2 .edgeSeq() );

      assume

       A1: W1 = W2;

      now

        thus ( len ES1) = ( len ES1);

        

         A2: ((2 * ( len ES1)) + 1) = ( len W2) by A1, Def15

        .= ((2 * ( len ES2)) + 1) by Def15;

        hence ( len ES2) = ( len ES1);

        let x be Nat;

        assume

         A3: x in ( dom ES1);

        then

         A4: x <= ( len ES2) by A2, FINSEQ_3: 25;

        

         A5: 1 <= x by A3, FINSEQ_3: 25;

        x <= ( len ES1) by A3, FINSEQ_3: 25;

        

        hence (ES1 . x) = (W2 . (2 * x)) by A1, A5, Def15

        .= (ES2 . x) by A5, A4, Def15;

      end;

      hence thesis by FINSEQ_2: 9;

    end;

    theorem :: GLIB_001:87

    x in (W .vertices() ) iff ex n be odd Element of NAT st n <= ( len W) & (W . n) = x by Lm45;

    theorem :: GLIB_001:88

    

     Th86: (W .first() ) in (W .vertices() ) & (W .last() ) in (W .vertices() )

    proof

      1 <= ( len W) by ABIAN: 12;

      hence (W .first() ) in (W .vertices() ) by Lm45, JORDAN12: 2;

      thus thesis by Lm45;

    end;

    theorem :: GLIB_001:89

    

     Th87: for n be odd Element of NAT st n <= ( len W) holds (W .vertexAt n) in (W .vertices() )

    proof

      let n be odd Element of NAT ;

      assume

       A1: n <= ( len W);

      then (W .vertexAt n) = (W . n) by Def8;

      hence thesis by A1, Lm45;

    end;

    theorem :: GLIB_001:90

    ((G .walkOf v) .vertices() ) = {v}

    proof

      now

        let x be object;

        

         A1: 1 <= ( len (G .walkOf v)) by ABIAN: 12;

        hereby

          assume x in ((G .walkOf v) .vertices() );

          then

          consider n be odd Element of NAT such that

           A2: n <= ( len (G .walkOf v)) and

           A3: ((G .walkOf v) . n) = x by Lm45;

          

           A4: 1 <= n by ABIAN: 12;

          n <= 1 by A2, Th12;

          then x = ((G .walkOf v) . 1) by A3, A4, XXREAL_0: 1;

          then x = v by Th12;

          hence x in {v} by TARSKI:def 1;

        end;

        assume x in {v};

        then

         A5: x = v by TARSKI:def 1;

        ((G .walkOf v) . 1) = v by Th12;

        hence x in ((G .walkOf v) .vertices() ) by A5, A1, Lm45, JORDAN12: 2;

      end;

      hence thesis by TARSKI: 2;

    end;

    theorem :: GLIB_001:91

    

     Th89: for e,x,y be object holds e Joins (x,y,G) implies ((G .walkOf (x,e,y)) .vertices() ) = {x, y}

    proof

      let e,x,y be object;

      set W = (G .walkOf (x,e,y));

      assume e Joins (x,y,G);

      then (W .vertexSeq() ) = <*x, y*> by Th68;

      hence thesis by FINSEQ_2: 127;

    end;

    theorem :: GLIB_001:92

    (W .vertices() ) = ((W .reverse() ) .vertices() )

    proof

      now

        reconsider lenW = ( len W) as odd Element of NAT ;

        let x be object;

        hereby

          reconsider lenW = ( len W) as odd Element of NAT ;

          assume x in (W .vertices() );

          then

          consider n be odd Element of NAT such that

           A1: n <= ( len W) and

           A2: (W . n) = x by Lm45;

          

           A3: ((lenW - n) + 1) is odd Element of NAT by A1, FINSEQ_5: 1;

          1 <= n by ABIAN: 12;

          then

           A4: n in ( dom W) by A1, FINSEQ_3: 25;

          then n in ( Seg ( len W)) by FINSEQ_1:def 3;

          then ((lenW - n) + 1) in ( Seg ( len W)) by FINSEQ_5: 2;

          then ((lenW - n) + 1) in ( dom W) by FINSEQ_1:def 3;

          then ((lenW - n) + 1) <= ( len W) by FINSEQ_3: 25;

          then

           A5: ((lenW - n) + 1) <= ( len (W .reverse() )) by FINSEQ_5:def 3;

          ((W .reverse() ) . ((( len W) - n) + 1)) = x by A2, A4, Th23;

          hence x in ((W .reverse() ) .vertices() ) by A3, A5, Lm45;

        end;

        assume x in ((W .reverse() ) .vertices() );

        then

        consider n be odd Element of NAT such that

         A6: n <= ( len (W .reverse() )) and

         A7: ((W .reverse() ) . n) = x by Lm45;

        

         A8: 1 <= n by ABIAN: 12;

        then n in ( dom (W .reverse() )) by A6, FINSEQ_3: 25;

        then

         A9: (W . ((( len W) - n) + 1)) = x by A7, FINSEQ_5:def 3;

        

         A10: n <= ( len W) by A6, FINSEQ_5:def 3;

        then n in ( Seg ( len W)) by A8, FINSEQ_1: 1;

        then ((lenW - n) + 1) in ( Seg ( len W)) by FINSEQ_5: 2;

        then

         A11: ((lenW - n) + 1) <= ( len W) by FINSEQ_1: 1;

        ((lenW - n) + 1) is odd Element of NAT by A10, FINSEQ_5: 1;

        hence x in (W .vertices() ) by A9, A11, Lm45;

      end;

      hence thesis by TARSKI: 2;

    end;

    theorem :: GLIB_001:93

    

     Th91: (W1 .last() ) = (W2 .first() ) implies ((W1 .append W2) .vertices() ) = ((W1 .vertices() ) \/ (W2 .vertices() ))

    proof

      set W = (W1 .append W2);

      assume

       A1: (W1 .last() ) = (W2 .first() );

      then

       A2: W = (W1 ^' W2) by Def10;

      now

        let x be object;

         A3:

        now

          assume x in (W1 .vertices() );

          then

          consider n be odd Element of NAT such that

           A4: n <= ( len W1) and

           A5: (W1 . n) = x by Lm45;

          1 <= n by ABIAN: 12;

          then

           A6: n in ( dom W1) by A4, FINSEQ_3: 25;

          then n in ( dom W) by Lm12;

          then

           A7: n <= ( len W) by FINSEQ_3: 25;

          (W . n) = x by A5, A6, Lm12;

          hence x in (W .vertices() ) by A7, Lm45;

        end;

        hereby

          assume

           A8: x in (W .vertices() );

          then

          reconsider v = x as Vertex of G;

          consider n be odd Element of NAT such that

           A9: n <= ( len W) and

           A10: (W . n) = v by A8, Lm45;

          

           A11: 1 <= n by ABIAN: 12;

          now

            per cases ;

              suppose

               A12: n <= ( len W1);

              then n in ( dom W1) by A11, FINSEQ_3: 25;

              then (W1 . n) = v by A10, Lm12;

              then v in (W1 .vertices() ) by A12, Lm45;

              hence x in ((W1 .vertices() ) \/ (W2 .vertices() )) by XBOOLE_0:def 3;

            end;

              suppose

               A13: n > ( len W1);

              then

              consider k be Nat such that

               A14: (( len W1) + k) = n by NAT_1: 10;

              reconsider k as even Element of NAT by A14, ORDINAL1:def 12;

              k <> 0 by A13, A14;

              then

               A15: ( 0 + 1) <= k by NAT_1: 13;

              ((( len W1) + k) + 1) <= (( len W) + 1) by A9, A14, XREAL_1: 7;

              then ((k + 1) + ( len W1)) <= (( len W2) + ( len W1)) by A1, Lm9;

              then

               A16: (((k + 1) + ( len W1)) - ( len W1)) <= ((( len W2) + ( len W1)) - ( len W1)) by XREAL_1: 13;

              then

               A17: (W2 .vertexAt (k + 1)) in (W2 .vertices() ) by Th87;

              k < ((( len W2) - 1) + 1) by A16, NAT_1: 13;

              then (W2 . (k + 1)) = v by A2, A10, A14, A15, FINSEQ_6: 141;

              then v in (W2 .vertices() ) by A16, A17, Def8;

              hence x in ((W1 .vertices() ) \/ (W2 .vertices() )) by XBOOLE_0:def 3;

            end;

          end;

          hence x in ((W1 .vertices() ) \/ (W2 .vertices() ));

        end;

        assume

         A18: x in ((W1 .vertices() ) \/ (W2 .vertices() ));

        now

          per cases by A18, XBOOLE_0:def 3;

            suppose x in (W1 .vertices() );

            hence x in (W .vertices() ) by A3;

          end;

            suppose

             A19: x in (W2 .vertices() );

            reconsider lenW1 = ( len W1) as odd Element of NAT ;

            consider n be odd Element of NAT such that

             A20: n <= ( len W2) and

             A21: (W2 . n) = x by A19, Lm45;

            reconsider naa1 = (n - 1) as even Element of NAT by ABIAN: 12, INT_1: 5;

            

             A22: naa1 < (( len W2) - 0 ) by A20, XREAL_1: 15;

            then (( len W1) + naa1) in ( dom W) by A1, Lm13;

            then

             A23: (lenW1 + naa1) <= ( len W) by FINSEQ_3: 25;

            (W . (( len W1) + naa1)) = (W2 . (naa1 + 1)) by A1, A22, Lm13;

            hence x in (W .vertices() ) by A21, A23, Lm45;

          end;

        end;

        hence x in (W .vertices() );

      end;

      hence thesis by TARSKI: 2;

    end;

    theorem :: GLIB_001:94

    for m,n be odd Element of NAT st m <= n & n <= ( len W) holds ((W .cut (m,n)) .vertices() ) c= (W .vertices() )

    proof

      let m,n be odd Element of NAT ;

      set W2 = (W .cut (m,n));

      assume that

       A1: m <= n and

       A2: n <= ( len W);

      now

        let x be object;

        assume x in (W2 .vertices() );

        then

        consider n be odd Element of NAT such that

         A3: n <= ( len W2) and

         A4: (W2 . n) = x by Lm45;

        reconsider naa1 = (n - 1) as even Element of NAT by ABIAN: 12, INT_1: 5;

        

         A5: naa1 < (( len W2) - 0 ) by A3, XREAL_1: 15;

        then (m + naa1) in ( dom W) by A1, A2, Lm15;

        then

         A6: (m + naa1) <= ( len W) by FINSEQ_3: 25;

        (W2 . (naa1 + 1)) = (W . (m + naa1)) by A1, A2, A5, Lm15;

        hence x in (W .vertices() ) by A4, A6, Lm45;

      end;

      hence thesis by TARSKI:def 3;

    end;

    theorem :: GLIB_001:95

    

     Th93: for e,x be object holds e Joins ((W .last() ),x,G) implies ((W .addEdge e) .vertices() ) = ((W .vertices() ) \/ {x})

    proof

      let e,x be object;

      set W2 = (G .walkOf ((W .last() ),e,((W .last() ) .adj e)));

      set W3 = (W .addEdge e), WV = (W .vertices() );

      assume

       A1: e Joins ((W .last() ),x,G);

      then

      reconsider x9 = x as Vertex of G by GLIB_000: 13;

      

       A2: ((W .last() ) .adj e) = x9 by A1, GLIB_000: 66;

      then (W2 .first() ) = (W .last() ) by A1, Th14;

      then

       A3: (W3 .vertices() ) = (WV \/ (W2 .vertices() )) by Th91;

       A4:

      now

        let y be object;

        hereby

          assume

           A5: y in (WV \/ {(W .last() ), x});

          now

            per cases by A5, XBOOLE_0:def 3;

              suppose y in WV;

              hence y in (WV \/ {x}) by XBOOLE_0:def 3;

            end;

              suppose

               A6: y in {(W .last() ), x};

              now

                per cases by A6, TARSKI:def 2;

                  suppose y = (W .last() );

                  then y in WV by Th86;

                  hence y in (WV \/ {x}) by XBOOLE_0:def 3;

                end;

                  suppose y = x;

                  then y in {x} by TARSKI:def 1;

                  hence y in (WV \/ {x}) by XBOOLE_0:def 3;

                end;

              end;

              hence y in (WV \/ {x});

            end;

          end;

          hence y in (WV \/ {x});

        end;

        assume

         A7: y in (WV \/ {x});

        now

          per cases by A7, XBOOLE_0:def 3;

            suppose y in WV;

            hence y in (WV \/ {(W .last() ), x}) by XBOOLE_0:def 3;

          end;

            suppose y in {x};

            then y = x by TARSKI:def 1;

            then y in {(W .last() ), x} by TARSKI:def 2;

            hence y in (WV \/ {(W .last() ), x}) by XBOOLE_0:def 3;

          end;

        end;

        hence y in (WV \/ {(W .last() ), x});

      end;

      (W2 .vertices() ) = {(W .last() ), x} by A1, A2, Th89;

      hence thesis by A3, A4, TARSKI: 2;

    end;

    theorem :: GLIB_001:96

    for G be _Graph, W be Walk of G, e,x be set holds e Joins ((W .last() ),x,G) & not x in (W .vertices() ) implies ( card ((W .addEdge e) .vertices() )) = (( card (W .vertices() )) + 1)

    proof

      let G be _Graph, W be Walk of G, e,x be set;

      assume that

       A1: e Joins ((W .last() ),x,G) and

       A2: not x in (W .vertices() );

      ( card ((W .addEdge e) .vertices() )) = ( card ((W .vertices() ) \/ {x})) by A1, Th93;

      hence thesis by A2, CARD_2: 41;

    end;

    theorem :: GLIB_001:97

    x in (W .vertices() ) & y in (W .vertices() ) implies ex W9 be Walk of G st W9 is_Walk_from (x,y)

    proof

      assume that

       A1: x in (W .vertices() ) and

       A2: y in (W .vertices() );

      consider m be odd Element of NAT such that

       A3: m <= ( len W) and

       A4: (W . m) = x by A1, Lm45;

      consider n be odd Element of NAT such that

       A5: n <= ( len W) and

       A6: (W . n) = y by A2, Lm45;

      now

        per cases ;

          suppose m <= n;

          then (W .cut (m,n)) is_Walk_from (x,y) by A4, A5, A6, Lm16;

          hence thesis;

        end;

          suppose n <= m;

          then (W .cut (n,m)) is_Walk_from (y,x) by A3, A4, A6, Lm16;

          then ((W .cut (n,m)) .reverse() ) is_Walk_from (x,y) by Th22;

          hence thesis;

        end;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:98

    for W1 be Walk of G1, W2 be Walk of G2 st W1 = W2 holds (W1 .vertices() ) = (W2 .vertices() ) by Th74;

    theorem :: GLIB_001:99

    e in (W .edges() ) iff ex n be even Element of NAT st 1 <= n & n <= ( len W) & (W . n) = e by Lm46;

    theorem :: GLIB_001:100

    

     Th98: e in (W .edges() ) iff ex n be odd Element of NAT st n < ( len W) & (W . (n + 1)) = e

    proof

      hereby

        assume e in (W .edges() );

        then

        consider n1 be even Element of NAT such that

         A1: 1 <= n1 and

         A2: n1 <= ( len W) and

         A3: (W . n1) = e by Lm46;

        reconsider n = (n1 - 1) as odd Element of NAT by A1, INT_1: 5;

        take n;

        (n1 - 1) < (( len W) - 0 ) by A2, XREAL_1: 15;

        hence n < ( len W);

        thus (W . (n + 1)) = e by A3;

      end;

      given n be odd Element of NAT such that

       A4: n < ( len W) and

       A5: (W . (n + 1)) = e;

      

       A6: 1 <= (n + 1) by NAT_1: 12;

      (n + 1) <= ( len W) by A4, NAT_1: 13;

      hence thesis by A5, A6, Lm46;

    end;

    theorem :: GLIB_001:101

    

     Th99: ( rng W) = ((W .vertices() ) \/ (W .edges() ))

    proof

      now

        let y be object;

        assume

         A1: y in ((W .vertices() ) \/ (W .edges() ));

        now

          per cases by A1, XBOOLE_0:def 3;

            suppose y in (W .vertices() );

            then

            consider x be odd Element of NAT such that

             A2: x <= ( len W) and

             A3: (W . x) = y by Lm45;

            1 <= x by ABIAN: 12;

            then x in ( dom W) by A2, FINSEQ_3: 25;

            hence y in ( rng W) by A3, FUNCT_1:def 3;

          end;

            suppose y in (W .edges() );

            then

            consider x be even Element of NAT such that

             A4: 1 <= x and

             A5: x <= ( len W) and

             A6: (W . x) = y by Lm46;

            x in ( dom W) by A4, A5, FINSEQ_3: 25;

            hence y in ( rng W) by A6, FUNCT_1:def 3;

          end;

        end;

        hence y in ( rng W);

      end;

      then

       A7: ((W .vertices() ) \/ (W .edges() )) c= ( rng W) by TARSKI:def 3;

      now

        let y be object;

        assume y in ( rng W);

        then

        consider x be Nat such that

         A8: x in ( dom W) and

         A9: (W . x) = y by FINSEQ_2: 10;

        

         A10: x <= ( len W) by A8, FINSEQ_3: 25;

        

         A11: 1 <= x by A8, FINSEQ_3: 25;

        now

          per cases ;

            suppose x is odd;

            then y in (W .vertices() ) by A8, A9, A10, Lm45;

            hence y in ((W .vertices() ) \/ (W .edges() )) by XBOOLE_0:def 3;

          end;

            suppose x is even;

            then y in (W .edges() ) by A8, A9, A11, A10, Lm46;

            hence y in ((W .vertices() ) \/ (W .edges() )) by XBOOLE_0:def 3;

          end;

        end;

        hence y in ((W .vertices() ) \/ (W .edges() ));

      end;

      then ( rng W) c= ((W .vertices() ) \/ (W .edges() )) by TARSKI:def 3;

      hence thesis by A7, XBOOLE_0:def 10;

    end;

    theorem :: GLIB_001:102

    

     Th100: (W1 .last() ) = (W2 .first() ) implies ((W1 .append W2) .edges() ) = ((W1 .edges() ) \/ (W2 .edges() ))

    proof

      set W = (W1 .append W2);

      set WE = (W .edges() ), W1E = (W1 .edges() ), W2E = (W2 .edges() );

      set lenW1 = ( len W1), lenW2 = ( len W2);

      reconsider lenW1, lenW2 as odd Element of NAT ;

      assume

       A1: (W1 .last() ) = (W2 .first() );

      then

       A2: W = (W1 ^' W2) by Def10;

      now

        let x be object;

        hereby

          assume x in WE;

          then

          consider n be even Element of NAT such that

           A3: 1 <= n and

           A4: n <= ( len W) and

           A5: (W . n) = x by Lm46;

          now

            per cases ;

              suppose

               A6: n <= ( len W1);

              then (W . n) = (W1 . n) by A2, A3, FINSEQ_6: 140;

              then x in W1E by A3, A5, A6, Lm46;

              hence x in (W1E \/ W2E) by XBOOLE_0:def 3;

            end;

              suppose ( len W1) < n;

              then

              reconsider k = (n - lenW1) as odd Element of NAT by INT_1: 5;

              

               A7: 1 <= (k + 1) by NAT_1: 12;

              ((n - lenW1) + ( len W1)) < (( len W) + 1) by A4, NAT_1: 13;

              then ((n - lenW1) + lenW1) < (lenW2 + ( len W1)) by A1, Lm9;

              then

               A8: k < ((lenW2 + ( len W1)) - ( len W1)) by XREAL_1: 14;

              then

               A9: (k + 1) <= ( len W2) by NAT_1: 13;

              (W2 . (k + 1)) = (W . (( len W1) + k)) by A2, A8, ABIAN: 12, FINSEQ_6: 141

              .= x by A5;

              then x in W2E by A7, A9, Lm46;

              hence x in (W1E \/ W2E) by XBOOLE_0:def 3;

            end;

          end;

          hence x in (W1E \/ W2E);

        end;

        assume

         A10: x in (W1E \/ W2E);

        now

          per cases by A10, XBOOLE_0:def 3;

            suppose x in W1E;

            then

            consider n be even Element of NAT such that

             A11: 1 <= n and

             A12: n <= ( len W1) and

             A13: (W1 . n) = x by Lm46;

            ( len W1) <= ( len W) by A1, Lm10;

            then

             A14: n <= ( len W) by A12, XXREAL_0: 2;

            (W . n) = x by A2, A11, A12, A13, FINSEQ_6: 140;

            hence x in WE by A11, A14, Lm46;

          end;

            suppose x in W2E;

            then

            consider n be even Element of NAT such that

             A15: 1 <= n and

             A16: n <= ( len W2) and

             A17: (W2 . n) = x by Lm46;

            reconsider naa1 = (n - 1) as odd Element of NAT by A15, INT_1: 5;

            naa1 < ( len W2) by A16, XREAL_1: 147;

            

            then

             A18: (W . (lenW1 + naa1)) = (W2 . (naa1 + 1)) by A2, ABIAN: 12, FINSEQ_6: 141

            .= x by A17;

            ((naa1 + 1) + lenW1) <= (( len W2) + ( len W1)) by A16, XREAL_1: 7;

            then ((lenW1 + naa1) + 1) <= (( len W) + 1) by A1, Lm9;

            then

             A19: (lenW1 + naa1) <= ( len W) by XREAL_1: 6;

            1 <= (lenW1 + naa1) by ABIAN: 12, NAT_1: 12;

            hence x in WE by A18, A19, Lm46;

          end;

        end;

        hence x in WE;

      end;

      hence thesis by TARSKI: 2;

    end;

    theorem :: GLIB_001:103

    e in (W .edges() ) implies ex v1,v2 be Vertex of G, n be odd Element of NAT st (n + 2) <= ( len W) & v1 = (W . n) & e = (W . (n + 1)) & v2 = (W . (n + 2)) & e Joins (v1,v2,G) by Lm47;

    theorem :: GLIB_001:104

    

     Th102: e in (W .edges() ) iff ex n be Element of NAT st n in ( dom (W .edgeSeq() )) & ((W .edgeSeq() ) . n) = e

    proof

      hereby

        assume e in (W .edges() );

        then

        consider n be object such that

         A1: n in ( dom (W .edgeSeq() )) and

         A2: ((W .edgeSeq() ) . n) = e by FUNCT_1:def 3;

        reconsider n as Element of NAT by A1;

        take n;

        thus n in ( dom (W .edgeSeq() )) & ((W .edgeSeq() ) . n) = e by A1, A2;

      end;

      given n be Element of NAT such that

       A3: n in ( dom (W .edgeSeq() )) and

       A4: ((W .edgeSeq() ) . n) = e;

      thus thesis by A3, A4, FUNCT_1:def 3;

    end;

    theorem :: GLIB_001:105

    e in (W .edges() ) & e Joins (x,y,G) implies x in (W .vertices() ) & y in (W .vertices() ) by Lm48;

    theorem :: GLIB_001:106

    ((W .cut (m,n)) .edges() ) c= (W .edges() )

    proof

      now

        per cases ;

          suppose

           A1: m is odd & n is odd & m <= n & n <= ( len W);

          then

          reconsider m9 = m as odd Element of NAT ;

          now

            let e be object;

            assume e in ((W .cut (m,n)) .edges() );

            then

            consider x be even Element of NAT such that

             A2: 1 <= x and

             A3: x <= ( len (W .cut (m,n))) and

             A4: ((W .cut (m,n)) . x) = e by Lm46;

            reconsider xaa1 = (x - 1) as odd Element of NAT by A2, INT_1: 5;

            

             A5: xaa1 < (( len (W .cut (m,n))) - 0 ) by A3, XREAL_1: 15;

            then

             A6: (m + xaa1) in ( dom W) by A1, Lm15;

            then

             A7: (m9 + xaa1) <= ( len W) by FINSEQ_3: 25;

            (xaa1 + 1) = x;

            then

             A8: e = (W . (m + xaa1)) by A1, A4, A5, Lm15;

            1 <= (m9 + xaa1) by A6, FINSEQ_3: 25;

            hence e in (W .edges() ) by A8, A7, Lm46;

          end;

          hence thesis by TARSKI:def 3;

        end;

          suppose not (m is odd & n is odd & m <= n & n <= ( len W));

          hence thesis by Def11;

        end;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:107

    

     Th105: (W .edges() ) = ((W .reverse() ) .edges() )

    proof

      now

        let e be object;

        hereby

          assume e in (W .edges() );

          then

          consider n be even Element of NAT such that

           A1: 1 <= n and

           A2: n <= ( len W) and

           A3: (W . n) = e by Lm46;

          

           A4: n in ( dom W) by A1, A2, FINSEQ_3: 25;

          then

           A5: ((( len W) - n) + 1) in ( dom (W .reverse() )) by Th23;

          then

          reconsider rn = ((( len W) - n) + 1) as even Element of NAT ;

          

           A6: 1 <= rn by A5, FINSEQ_3: 25;

          

           A7: rn <= ( len (W .reverse() )) by A5, FINSEQ_3: 25;

          e = ((W .reverse() ) . ((( len W) - n) + 1)) by A3, A4, Th23;

          hence e in ((W .reverse() ) .edges() ) by A6, A7, Lm46;

        end;

        assume e in ((W .reverse() ) .edges() );

        then

        consider n be even Element of NAT such that

         A8: 1 <= n and

         A9: n <= ( len (W .reverse() )) and

         A10: ((W .reverse() ) . n) = e by Lm46;

        

         A11: n in ( dom (W .reverse() )) by A8, A9, FINSEQ_3: 25;

        then

         A12: ((( len (W .reverse() )) - n) + 1) in ( dom ((W .reverse() ) .reverse() )) by Th23;

        then

        reconsider rn = ((( len (W .reverse() )) - n) + 1) as even Element of NAT ;

        e = (((W .reverse() ) .reverse() ) . ((( len (W .reverse() )) - n) + 1)) by A10, A11, Th23;

        then

         A13: e = (W . rn);

        rn in ( dom W) by A12;

        then

         A14: rn <= ( len W) by FINSEQ_3: 25;

        1 <= rn by A12, FINSEQ_3: 25;

        hence e in (W .edges() ) by A13, A14, Lm46;

      end;

      hence thesis by TARSKI: 2;

    end;

    theorem :: GLIB_001:108

    

     Th106: for e,x,y be object holds e Joins (x,y,G) iff ((G .walkOf (x,e,y)) .edges() ) = {e}

    proof

      let e,x,y be object;

      set W = (G .walkOf (x,e,y));

      hereby

        assume e Joins (x,y,G);

        then (W .edgeSeq() ) = <*e*> by Th81;

        hence (W .edges() ) = {e} by FINSEQ_1: 39;

      end;

      assume (W .edges() ) = {e};

      then e in (W .edges() ) by TARSKI:def 1;

      then

      consider n be even Element of NAT such that

       A1: 1 <= n and

       A2: n <= ( len W) and (W . n) = e by Lm46;

      

       A3: ((2 * 0 ) + 1) < n by A1, XXREAL_0: 1;

      now

        assume not e Joins (x,y,G);

        then W = (G .walkOf the Element of ( the_Vertices_of G)) by Def5;

        hence contradiction by A2, A3, Th12;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:109

    (W .edges() ) c= (G .edgesBetween (W .vertices() ))

    proof

      now

        let e be object;

        assume e in (W .edges() );

        then

        consider v1,v2 be Vertex of G, n be odd Element of NAT such that

         A1: (n + 2) <= ( len W) and

         A2: v1 = (W . n) and e = (W . (n + 1)) and

         A3: v2 = (W . (n + 2)) and

         A4: e Joins (v1,v2,G) by Lm47;

        n < ( len W) by A1, Th1;

        then

         A5: v1 in (W .vertices() ) by A2, Lm45;

        v2 in (W .vertices() ) by A1, A3, Lm45;

        hence e in (G .edgesBetween (W .vertices() )) by A4, A5, GLIB_000: 32;

      end;

      hence thesis by TARSKI:def 3;

    end;

    theorem :: GLIB_001:110

    for W1 be Walk of G1, W2 be Walk of G2 st W1 = W2 holds (W1 .edges() ) = (W2 .edges() ) by Th84;

    theorem :: GLIB_001:111

    for e,x be object holds e Joins ((W .last() ),x,G) implies ((W .addEdge e) .edges() ) = ((W .edges() ) \/ {e})

    proof

      let e,x be object;

      set WB = (G .walkOf ((W .last() ),e,((W .last() ) .adj e)));

      assume e Joins ((W .last() ),x,G);

      then e in ((W .last() ) .edgesInOut() ) by GLIB_000: 62;

      then

       A1: e Joins ((W .last() ),((W .last() ) .adj e),G) by GLIB_000: 67;

      then

       A2: (WB .first() ) = (W .last() ) by Th14;

      (WB .edges() ) = {e} by A1, Th106;

      hence thesis by A2, Th100;

    end;

    theorem :: GLIB_001:112

    ( len W) = ((2 * (W .length() )) + 1) by Def15;

    theorem :: GLIB_001:113

    ( len W1) = ( len W2) iff (W1 .length() ) = (W2 .length() )

    proof

      hereby

        assume ( len W1) = ( len W2);

        

        then ((2 * (W1 .length() )) + 1) = ( len W2) by Def15

        .= ((2 * (W2 .length() )) + 1) by Def15;

        hence (W1 .length() ) = (W2 .length() );

      end;

      assume (W1 .length() ) = (W2 .length() );

      

      hence ( len W1) = ((2 * (W2 .length() )) + 1) by Def15

      .= ( len W2) by Def15;

    end;

    theorem :: GLIB_001:114

    for W1 be Walk of G1, W2 be Walk of G2 st W1 = W2 holds (W1 .length() ) = (W2 .length() ) by Th84;

    theorem :: GLIB_001:115

    

     Th113: for n be odd Element of NAT st n <= ( len W) holds (W .find (W . n)) <= n & (W .rfind (W . n)) >= n

    proof

      let n be odd Element of NAT ;

      assume

       A1: n <= ( len W);

      then

       A2: (W . n) in (W .vertices() ) by Lm45;

      hence (W .find (W . n)) <= n by A1, Def19;

      thus thesis by A1, A2, Def21;

    end;

    theorem :: GLIB_001:116

    for W1 be Walk of G1, W2 be Walk of G2, v be set st W1 = W2 holds (W1 .find v) = (W2 .find v) & (W1 .rfind v) = (W2 .rfind v)

    proof

      let W1 be Walk of G1, W2 be Walk of G2, v be set;

      assume

       A1: W1 = W2;

      now

        per cases ;

          suppose

           A2: v in (W1 .vertices() );

          then

           A3: (W2 . (W1 .find v)) = v by A1, Def19;

          

           A4: v in (W2 .vertices() ) by A1, A2, Th74;

          

           A5: for n be odd Nat st n <= ( len W2) & (W2 . n) = v holds (W1 .find v) <= n by A1, A2, Def19;

          (W1 .find v) <= ( len W2) by A1, A2, Def19;

          hence (W1 .find v) = (W2 .find v) by A4, A3, A5, Def19;

          

           A6: (W2 . (W1 .rfind v)) = v by A1, A2, Def21;

          

           A7: for n be odd Element of NAT st n <= ( len W2) & (W2 . n) = v holds n <= (W1 .rfind v) by A1, A2, Def21;

          (W1 .rfind v) <= ( len W2) by A1, A2, Def21;

          hence (W1 .rfind v) = (W2 .rfind v) by A4, A6, A7, Def21;

        end;

          suppose

           A8: not v in (W1 .vertices() );

          then

           A9: not v in (W2 .vertices() ) by A1, Th74;

          

          thus (W1 .find v) = ( len W2) by A1, A8, Def19

          .= (W2 .find v) by A9, Def19;

          

          thus (W1 .rfind v) = ( len W2) by A1, A8, Def21

          .= (W2 .rfind v) by A9, Def21;

        end;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:117

    for n be odd Element of NAT st n <= ( len W) holds (W .find n) <= n & (W .rfind n) >= n by Lm49, Lm50;

    theorem :: GLIB_001:118

    W is closed iff (W . 1) = (W . ( len W));

    theorem :: GLIB_001:119

    W is closed iff ex x be set st W is_Walk_from (x,x)

    proof

      hereby

        set x = (W .first() );

        assume W is closed;

        then (W .first() ) = (W .last() );

        then W is_Walk_from (x,x);

        hence ex x be set st W is_Walk_from (x,x);

      end;

      given v be set such that

       A1: W is_Walk_from (v,v);

      

       A2: (W .last() ) = v by A1;

      (W .first() ) = v by A1;

      hence thesis by A2;

    end;

    theorem :: GLIB_001:120

    W is closed iff (W .reverse() ) is closed

    proof

      W is closed iff ((W .reverse() ) .last() ) = (W .last() ) by Th21;

      then W is closed iff ((W .reverse() ) .last() ) = ((W .reverse() ) .first() ) by Th21;

      hence thesis;

    end;

    theorem :: GLIB_001:121

    for W1 be Walk of G1, W2 be Walk of G2 st W1 = W2 & W1 is closed holds W2 is closed;

    theorem :: GLIB_001:122

    W is directed iff for n be odd Element of NAT st n < ( len W) holds (W . (n + 1)) DJoins ((W . n),(W . (n + 2)),G) by Lm51;

    theorem :: GLIB_001:123

    W is directed & W is_Walk_from (x,y) & e DJoins (y,z,G) implies (W .addEdge e) is directed & (W .addEdge e) is_Walk_from (x,z) by Lm52;

    theorem :: GLIB_001:124

    for W be DWalk of G, m,n be Element of NAT holds (W .cut (m,n)) is directed;

    theorem :: GLIB_001:125

    W is non trivial iff 3 <= ( len W) by Lm54;

    theorem :: GLIB_001:126

    W is non trivial iff ( len W) <> 1 by Lm55;

    theorem :: GLIB_001:127

    (W .first() ) <> (W .last() ) implies W is non trivial by Lm55;

    theorem :: GLIB_001:128

    W is trivial iff ex v be Vertex of G st W = (G .walkOf v) by Lm56;

    theorem :: GLIB_001:129

    W is trivial iff (W .reverse() ) is trivial

    proof

      thus W is trivial implies (W .reverse() ) is trivial;

      assume (W .reverse() ) is trivial;

      then ( len (W .reverse() )) = 1 by Lm55;

      then ( len W) = 1 by FINSEQ_5:def 3;

      hence thesis by Lm55;

    end;

    theorem :: GLIB_001:130

    W2 is trivial implies (W1 .append W2) = W1

    proof

      assume W2 is trivial;

      then

       A1: ( len W2) = 1 by Lm55;

      now

        per cases ;

          suppose (W1 .last() ) = (W2 .first() );

          then

           A2: (W1 .append W2) = (W1 ^' W2) by Def10;

          then

           A3: (( len (W1 .append W2)) + 1) = (( len W1) + 1) by A1, CARD_1: 27, FINSEQ_6: 139;

          for k be Nat st 1 <= k & k <= ( len (W1 .append W2)) holds ((W1 .append W2) . k) = (W1 . k) by A2, A3, FINSEQ_6: 140;

          hence thesis by A3, FINSEQ_1: 14;

        end;

          suppose (W1 .last() ) <> (W2 .first() );

          hence thesis by Def10;

        end;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:131

    for m,n be odd Element of NAT st m <= n & n <= ( len W) holds (W .cut (m,n)) is trivial iff m = n

    proof

      let m,n be odd Element of NAT ;

      assume that

       A1: m <= n and

       A2: n <= ( len W);

      

       A3: (( len (W .cut (m,n))) + m) = (n + 1) by A1, A2, Lm15;

      hereby

        assume (W .cut (m,n)) is trivial;

        then 1 = ((n - m) + 1) by A3, Lm55;

        hence m = n;

      end;

      assume m = n;

      hence thesis by A3, Lm55;

    end;

    theorem :: GLIB_001:132

    

     Th130: for e,x be object holds e Joins ((W .last() ),x,G) implies (W .addEdge e) is non trivial

    proof

      let e,x be object;

      assume e Joins ((W .last() ),x,G);

      then

       A1: ( len (W .addEdge e)) = (( len W) + 2) by Lm37;

      (1 + 0 ) < (( len W) + 2) by XREAL_1: 8;

      hence thesis by A1, Lm55;

    end;

    theorem :: GLIB_001:133

    

     Th131: W is non trivial implies ex lenW2 be odd Element of NAT st lenW2 = (( len W) - 2) & ((W .cut (1,lenW2)) .addEdge (W . (lenW2 + 1))) = W

    proof

      set lenW2 = (( len W) - (2 * 1));

      assume W is non trivial;

      then ( len W) >= 3 by Lm54;

      then

      reconsider lenW2 as odd Element of NAT by INT_1: 5, XXREAL_0: 2;

      set W1 = (W .cut (1,lenW2)), e = (W . (lenW2 + 1));

      take lenW2;

      thus lenW2 = (( len W) - 2);

      lenW2 < (( len W) - 0 ) by XREAL_1: 15;

      

      hence (W1 .addEdge e) = (W .cut (1,(lenW2 + 2))) by Th39, ABIAN: 12, JORDAN12: 2

      .= W by Lm18;

    end;

    theorem :: GLIB_001:134

    

     Th132: W2 is non trivial & (W2 .edges() ) c= (W1 .edges() ) implies (W2 .vertices() ) c= (W1 .vertices() )

    proof

      assume that

       A1: W2 is non trivial and

       A2: (W2 .edges() ) c= (W1 .edges() );

      

       A3: 3 <= ( len W2) by A1, Lm54;

      now

        let v be object;

        assume v in (W2 .vertices() );

        then

        consider n be odd Element of NAT such that

         A4: n <= ( len W2) and

         A5: (W2 . n) = v by Lm45;

        now

          per cases ;

            suppose n = ( len W2);

            then (3 - 1) < (n - 0 ) by A3, XREAL_1: 15;

            then

            reconsider n5 = (n - (2 * 1)) as odd Element of NAT by INT_1: 5;

            

             A6: 1 <= (n5 + 1) by NAT_1: 12;

            n5 < (n - 0 ) by XREAL_1: 15;

            then

             A7: n5 < ( len W2) by A4, XXREAL_0: 2;

            then

             A8: (W2 . (n5 + 1)) Joins ((W2 . n5),(W2 . (n5 + 2)),G) by Def3;

            (n5 + 1) <= ( len W2) by A7, NAT_1: 13;

            then (W2 . (n5 + 1)) in (W2 .edges() ) by A6, Lm46;

            then

            consider m be even Element of NAT such that

             A9: 1 <= m and

             A10: m <= ( len W1) and

             A11: (W1 . m) = (W2 . (n5 + 1)) by A2, Lm46;

            reconsider maa1 = (m - 1) as odd Element of NAT by A9, INT_1: 5;

            

             A12: maa1 < (( len W1) - 0 ) by A10, XREAL_1: 15;

            then

             A13: (W1 . (maa1 + 1)) Joins ((W1 . maa1),(W1 . (maa1 + 2)),G) by Def3;

            

             A14: (W1 . maa1) = (W1 .vertexAt maa1) by A12, Def8;

            

             A15: (maa1 + 2) <= ( len W1) by A12, Th1;

            then (W1 . (maa1 + 2)) = (W1 .vertexAt (maa1 + 2)) by Def8;

            then v = (W1 .vertexAt maa1) or v = (W1 .vertexAt (maa1 + 2)) by A5, A8, A11, A13, A14, GLIB_000: 15;

            hence v in (W1 .vertices() ) by A12, A15, Th87;

          end;

            suppose n <> ( len W2);

            then

             A16: n < ( len W2) by A4, XXREAL_0: 1;

            then (W2 . (n + 1)) in (W2 .edges() ) by Th98;

            then

            consider m be even Element of NAT such that

             A17: 1 <= m and

             A18: m <= ( len W1) and

             A19: (W1 . m) = (W2 . (n + 1)) by A2, Lm46;

            

             A20: (W1 . m) Joins (v,(W2 . (n + 2)),G) by A5, A16, A19, Def3;

            reconsider maa1 = (m - 1) as odd Element of NAT by A17, INT_1: 5;

            

             A21: maa1 < (( len W1) - 0 ) by A18, XREAL_1: 15;

            then

             A22: (W1 . (maa1 + 1)) Joins ((W1 . maa1),(W1 . (maa1 + 2)),G) by Def3;

            

             A23: (W1 . maa1) = (W1 .vertexAt maa1) by A21, Def8;

            

             A24: (maa1 + 2) <= ( len W1) by A21, Th1;

            then (W1 . (maa1 + 2)) = (W1 .vertexAt (maa1 + 2)) by Def8;

            then v = (W1 .vertexAt maa1) or v = (W1 .vertexAt (maa1 + 2)) by A20, A22, A23, GLIB_000: 15;

            hence v in (W1 .vertices() ) by A21, A24, Th87;

          end;

        end;

        hence v in (W1 .vertices() );

      end;

      hence thesis by TARSKI:def 3;

    end;

    theorem :: GLIB_001:135

    W is non trivial implies for v be Vertex of G st v in (W .vertices() ) holds not v is isolated

    proof

      assume W is non trivial;

      then

       A1: ( len W) <> 1 by Lm55;

      let v be Vertex of G;

      assume v in (W .vertices() );

      then

      consider n be odd Element of NAT such that

       A2: n <= ( len W) and

       A3: (W . n) = v by Lm45;

      now

        per cases ;

          suppose

           A4: n = ( len W);

          1 <= ( len W) by ABIAN: 12;

          then 1 < ( len W) by A1, XXREAL_0: 1;

          then (1 + 1) <= ( len W) by NAT_1: 13;

          then

          reconsider lenW2 = (( len W) - (2 * 1)) as odd Element of NAT by INT_1: 5;

          lenW2 < (( len W) - 0 ) by XREAL_1: 15;

          then (W . (lenW2 + 1)) Joins ((W . lenW2),(W . (lenW2 + 2)),G) by Def3;

          then (W . (lenW2 + 1)) Joins (v,(W . lenW2),G) by A3, A4, GLIB_000: 14;

          hence ex e be set st e in (v .edgesInOut() ) by GLIB_000: 62;

        end;

          suppose n <> ( len W);

          then n < ( len W) by A2, XXREAL_0: 1;

          then (W . (n + 1)) Joins (v,(W . (n + 2)),G) by A3, Def3;

          hence ex e be set st e in (v .edgesInOut() ) by GLIB_000: 62;

        end;

      end;

      hence thesis by GLIB_000:def 49;

    end;

    theorem :: GLIB_001:136

    W is trivial iff (W .edges() ) = {}

    proof

      hereby

        assume W is trivial;

        then (W .length() ) = 0 ;

        then (W .edgeSeq() ) = {} ;

        hence (W .edges() ) = {} ;

      end;

      assume (W .edges() ) = {} ;

      then (W .edgeSeq() ) = {} ;

      then (W .length() ) = 0 ;

      hence thesis;

    end;

    theorem :: GLIB_001:137

    for W1 be Walk of G1, W2 be Walk of G2 st W1 = W2 & W1 is trivial holds W2 is trivial;

    theorem :: GLIB_001:138

    W is Trail-like iff for m,n be even Element of NAT st 1 <= m & m < n & n <= ( len W) holds (W . m) <> (W . n) by Lm57;

    theorem :: GLIB_001:139

    ( len W) <= 3 implies W is Trail-like by Lm61;

    theorem :: GLIB_001:140

    W is Trail-like iff (W .reverse() ) is Trail-like by Lm58;

    theorem :: GLIB_001:141

    for W be Trail of G, m,n be Element of NAT holds (W .cut (m,n)) is Trail-like;

    theorem :: GLIB_001:142

    for W be Trail of G, e be set st e in ((W .last() ) .edgesInOut() ) & not e in (W .edges() ) holds (W .addEdge e) is Trail-like by Lm60;

    theorem :: GLIB_001:143

    for W be Trail of G, v be Vertex of G st v in (W .vertices() ) & v is endvertex holds v = (W .first() ) or v = (W .last() )

    proof

      let W be Trail of G, v be Vertex of G;

      assume that

       A1: v in (W .vertices() ) and

       A2: v is endvertex;

      consider e be object such that

       A3: (v .edgesInOut() ) = {e} and not e Joins (v,v,G) by A2, GLIB_000:def 51;

      consider n be odd Element of NAT such that

       A4: n <= ( len W) and

       A5: (W . n) = v by A1, Lm45;

      

       A6: (W .vertexAt n) = v by A4, A5, Def8;

      now

        reconsider naa1 = (n - 1) as even Element of NAT by ABIAN: 12, INT_1: 5;

        assume that

         A7: v <> (W .first() ) and

         A8: v <> (W .last() );

        

         A9: (n - 1) < (naa1 + 2) by NAT_1: 16;

        1 <= n by ABIAN: 12;

        then

         A10: 1 < n by A5, A7, XXREAL_0: 1;

        then (1 + 1) <= n by NAT_1: 13;

        then

         A11: ((1 + 1) - 1) <= (n - 1) by XREAL_1: 13;

        

         A12: n < ( len W) by A4, A5, A8, XXREAL_0: 1;

        then

         A13: (W . (n + 1)) in (v .edgesInOut() ) by A6, Th9;

        (W . (n - 1)) in (v .edgesInOut() ) by A4, A6, A10, Th10;

        then

         A14: (W . (n - 1)) = e by A3, TARSKI:def 1;

        (n + 1) <= ( len W) by A12, NAT_1: 13;

        then (W . naa1) <> (W . (n + 1)) by A11, A9, Lm57;

        hence contradiction by A3, A14, A13, TARSKI:def 1;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:144

    for G be _finite _Graph, W be Trail of G holds ( len (W .edgeSeq() )) <= (G .size() )

    proof

      let G be _finite _Graph, W be Trail of G;

      consider f be Function such that

       A1: ( dom f) = (W .edgeSeq() ) & for x be object st x in (W .edgeSeq() ) holds (f . x) = (x `2 ) from FUNCT_1:sch 3;

      now

        

         A2: (W .edgeSeq() ) is one-to-one by Def27;

        let x1,x2 be object;

        assume that

         A3: x1 in ( dom f) and

         A4: x2 in ( dom f) and

         A5: (f . x1) = (f . x2);

        consider a1,b1 be object such that

         A6: x1 = [a1, b1] by A1, A3, RELAT_1:def 1;

        

         A7: a1 in ( dom (W .edgeSeq() )) by A1, A3, A6, FUNCT_1: 1;

        

         A8: (f . x2) = (x2 `2 ) by A1, A4;

        

         A9: ((W .edgeSeq() ) . a1) = b1 by A1, A3, A6, FUNCT_1: 1;

        consider a2,b2 be object such that

         A10: x2 = [a2, b2] by A1, A4, RELAT_1:def 1;

        

         A11: a2 in ( dom (W .edgeSeq() )) by A1, A4, A10, FUNCT_1: 1;

        (f . x1) = (x1 `2 ) by A1, A3;

        

        then

         A12: b1 = (f . x1) by A6

        .= b2 by A5, A8, A10;

        then ((W .edgeSeq() ) . a2) = b1 by A1, A4, A10, FUNCT_1: 1;

        hence x1 = x2 by A6, A10, A12, A2, A7, A9, A11, FUNCT_1:def 4;

      end;

      then

       A13: f is one-to-one by FUNCT_1:def 4;

      now

        let y be object;

        assume y in ( rng f);

        then

        consider x be object such that

         A14: x in ( dom f) and

         A15: (f . x) = y by FUNCT_1:def 3;

        consider a,b be object such that

         A16: x = [a, b] by A1, A14, RELAT_1:def 1;

        y = (x `2 ) by A1, A14, A15;

        then y = b by A16;

        then y in ( rng (W .edgeSeq() )) by A1, A14, A16, XTUPLE_0:def 13;

        hence y in ( the_Edges_of G);

      end;

      then ( rng f) c= ( the_Edges_of G) by TARSKI:def 3;

      then ( Segm ( card (W .edgeSeq() ))) c= ( Segm ( card ( the_Edges_of G))) by A1, A13, CARD_1: 10;

      then ( card (W .edgeSeq() )) <= ( card ( the_Edges_of G)) by NAT_1: 39;

      hence thesis by GLIB_000:def 25;

    end;

    theorem :: GLIB_001:145

    ( len W) <= 3 implies W is Path-like by Lm69;

    theorem :: GLIB_001:146

    (for m,n be odd Element of NAT st m <= ( len W) & n <= ( len W) & (W . m) = (W . n) holds m = n) implies W is Path-like by Lm66;

    theorem :: GLIB_001:147

    for W be Path of G st W is open holds for m,n be odd Element of NAT st m < n & n <= ( len W) holds (W . m) <> (W . n)

    proof

      let W be Path of G;

      assume

       A1: W is open;

      let m,n be odd Element of NAT ;

      assume that

       A2: m < n and

       A3: n <= ( len W);

      now

        assume

         A4: (W . m) = (W . n);

        then

         A5: n = ( len W) by A2, A3, Def28;

        m = 1 by A2, A3, A4, Def28;

        hence contradiction by A1, A4, A5;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:148

    W is Path-like iff (W .reverse() ) is Path-like by Lm63;

    theorem :: GLIB_001:149

    for W be Path of G, m,n be Element of NAT holds (W .cut (m,n)) is Path-like;

    theorem :: GLIB_001:150

    

     Th148: for W be Path of G, e,v be object st e Joins ((W .last() ),v,G) & not e in (W .edges() ) & (W is trivial or W is open) & for n be odd Element of NAT st 1 < n & n <= ( len W) holds (W . n) <> v holds (W .addEdge e) is Path-like

    proof

      let W be Path of G, e,v be object;

      assume that

       A1: e Joins ((W .last() ),v,G) and

       A2: not e in (W .edges() ) and

       A3: W is trivial or W is open and

       A4: for n be odd Element of NAT st 1 < n & n <= ( len W) holds (W . n) <> v;

      reconsider lenW = ( len W) as odd Element of NAT ;

      set W2 = (W .addEdge e);

      

       A5: e in ((W .last() ) .edgesInOut() ) by A1, GLIB_000: 62;

      now

        thus W2 is Trail-like by A2, A5, Lm60;

        let m,n be odd Element of NAT ;

        assume that

         A6: m < n and

         A7: n <= ( len W2) and

         A8: (W2 . m) = (W2 . n);

        now

          per cases by A3;

            suppose

             A9: W is open;

            now

              per cases ;

                suppose

                 A10: n <= ( len W);

                

                 A11: 1 <= m by ABIAN: 12;

                m <= ( len W) by A6, A10, XXREAL_0: 2;

                then m in ( dom W) by A11, FINSEQ_3: 25;

                then

                 A12: (W2 . m) = (W . m) by A1, Lm38;

                1 <= n by ABIAN: 12;

                then n in ( dom W) by A10, FINSEQ_3: 25;

                then

                 A13: (W . m) = (W . n) by A1, A8, A12, Lm38;

                then m = 1 by A6, A10, Def28;

                then (W .first() ) = (W .last() ) by A6, A10, A13, Def28;

                hence m = 1 & n = ( len W2) by A9;

              end;

                suppose n > ( len W);

                then (lenW + 1) <= n by NAT_1: 13;

                then (lenW + 1) < n by XXREAL_0: 1;

                then ((lenW + 1) + 1) <= n by NAT_1: 13;

                then (( len W) + (1 + 1)) <= n;

                then

                 A14: ( len W2) <= n by A1, Lm37;

                then

                 A15: n = ( len W2) by A7, XXREAL_0: 1;

                then (W2 . n) = (W2 . (( len W) + 2)) by A1, Lm37;

                then

                 A16: (W2 . n) = v by A1, Lm38;

                m < (( len W) + (1 + 1)) by A1, A6, A15, Lm37;

                then m < ((( len W) + 1) + 1);

                then m <= (lenW + 1) by NAT_1: 13;

                then m < (lenW + 1) by XXREAL_0: 1;

                then

                 A17: m <= ( len W) by NAT_1: 13;

                1 <= m by ABIAN: 12;

                then m in ( dom W) by A17, FINSEQ_3: 25;

                then

                 A18: (W . m) = v by A1, A8, A16, Lm38;

                now

                  

                   A19: 1 <= m by ABIAN: 12;

                  assume m <> 1;

                  then 1 < m by A19, XXREAL_0: 1;

                  hence contradiction by A4, A17, A18;

                end;

                hence m = 1;

                thus n = ( len W2) by A7, A14, XXREAL_0: 1;

              end;

            end;

            hence m = 1 & n = ( len W2);

          end;

            suppose W is trivial;

            then ex v be Vertex of G st W = (G .walkOf v) by Lm56;

            then ( len W) = 1 by Th12;

            then

             A20: ( len W2) = (1 + 2) by A1, Lm37;

            

             A21: (m + 1) <= n by A6, NAT_1: 13;

            

             A22: 1 <= m by ABIAN: 12;

            then (1 + 1) <= (m + 1) by XREAL_1: 7;

            then (2 * 1) <= n by A21, XXREAL_0: 2;

            then (2 * 1) < n by XXREAL_0: 1;

            then

             A23: ( len W2) <= n by A20, NAT_1: 13;

            then m < 3 by A6, A7, A20, XXREAL_0: 1;

            then ((m + 1) - 1) <= (3 - 1) by A20, NAT_1: 13;

            then m < (2 * 1) by XXREAL_0: 1;

            then (m + 1) <= 2 by NAT_1: 13;

            then ((m + 1) - 1) <= (2 - 1) by XREAL_1: 13;

            hence m = 1 & n = ( len W2) by A7, A22, A23, XXREAL_0: 1;

          end;

        end;

        hence m = 1 & n = ( len W2);

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:151

    for W be Path of G, e,v be object st e Joins ((W .last() ),v,G) & not v in (W .vertices() ) & (W is trivial or W is open) holds (W .addEdge e) is Path-like by Lm68;

    theorem :: GLIB_001:152

    (for n be odd Element of NAT st n <= ( len W) holds (W .find (W . n)) = (W .rfind (W . n))) implies W is Path-like

    proof

      assume

       A1: for n be odd Element of NAT st n <= ( len W) holds (W .find (W . n)) = (W .rfind (W . n));

       A2:

      now

        let x be odd Element of NAT ;

        assume

         A3: x <= ( len W);

        then

         A4: (W .rfind (W . x)) >= x by Th113;

        

         A5: (W .find (W . x)) = (W .rfind (W . x)) by A1, A3;

        (W .find (W . x)) <= x by A3, Th113;

        hence (W .find (W . x)) = x & (W .rfind (W . x)) = x by A4, A5, XXREAL_0: 1;

      end;

      now

        let m,n be even Element of NAT ;

        assume that

         A6: 1 <= m and

         A7: m < n and

         A8: n <= ( len W);

        1 <= n by A6, A7, XXREAL_0: 2;

        then n in ( dom W) by A8, FINSEQ_3: 25;

        then

        consider naa1 be odd Element of NAT such that

         A9: naa1 = (n - 1) and

         A10: (n - 1) in ( dom W) and

         A11: (n + 1) in ( dom W) and

         A12: (W . n) Joins ((W . naa1),(W . (n + 1)),G) by Lm2;

        m <= ( len W) by A7, A8, XXREAL_0: 2;

        then m in ( dom W) by A6, FINSEQ_3: 25;

        then

        consider maa1 be odd Element of NAT such that

         A13: maa1 = (m - 1) and

         A14: (m - 1) in ( dom W) and (m + 1) in ( dom W) and

         A15: (W . m) Joins ((W . maa1),(W . (m + 1)),G) by Lm2;

        now

          set Wnaa1 = (W . naa1), Wn1 = (W . (n + 1));

          set Wmaa1 = (W . maa1), Wm1 = (W . (m + 1));

          assume

           A16: (W . m) = (W . n);

          maa1 <= ( len W) by A13, A14, FINSEQ_3: 25;

          then

           A17: (W .find Wmaa1) = maa1 by A2;

          

           A18: (n + 1) <= ( len W) by A11, FINSEQ_3: 25;

          

           A19: naa1 <= ( len W) by A9, A10, FINSEQ_3: 25;

          now

            per cases by A15, A12, A16, GLIB_000: 15;

              suppose Wmaa1 = Wnaa1 & Wm1 = Wn1;

              then maa1 = naa1 by A2, A19, A17;

              hence contradiction by A7, A13, A9;

            end;

              suppose Wmaa1 = Wn1 & Wm1 = Wnaa1;

              then maa1 = (n + 1) by A2, A18, A17;

              then n <= ((maa1 - 1) + 1) by NAT_1: 12;

              then n <= ((m - 1) + 1) by A13, NAT_1: 12;

              hence contradiction by A7;

            end;

          end;

          hence contradiction;

        end;

        hence (W . m) <> (W . n);

      end;

      then

       A20: W is Trail-like by Lm57;

      now

        let m,n be odd Element of NAT ;

        assume that

         A21: m < n and

         A22: n <= ( len W) and

         A23: (W . m) = (W . n);

        m <= ( len W) by A21, A22, XXREAL_0: 2;

        then (W .find (W . m)) = m by A2;

        hence m = 1 & n = ( len W) by A2, A21, A22, A23;

      end;

      hence thesis by A20;

    end;

    theorem :: GLIB_001:153

    (for n be odd Element of NAT st n <= ( len W) holds (W .rfind n) = n) implies W is Path-like by Lm67;

    theorem :: GLIB_001:154

    for G be _finite _Graph, W be Path of G holds ( len (W .vertexSeq() )) <= ((G .order() ) + 1)

    proof

      let G be _finite _Graph, W be Path of G;

      now

        per cases ;

          suppose ( len W) = 1;

          then (1 + 1) = (2 * ( len (W .vertexSeq() ))) by Def14;

          hence thesis by NAT_1: 12;

        end;

          suppose ( len W) <> 1;

          then W is non trivial by Lm55;

          then

          consider lenW2 be odd Element of NAT such that

           A1: lenW2 = (( len W) - 2) and

           A2: ((W .cut (1,lenW2)) .addEdge (W . (lenW2 + 1))) = W by Th131;

          set W2 = (W .cut (1,lenW2)), vs1 = (W2 .vertexSeq() );

          consider f be Function such that

           A3: ( dom f) = vs1 & for x be object st x in vs1 holds (f . x) = (x `2 ) from FUNCT_1:sch 3;

          

           A4: lenW2 < (( len W) - 0 ) by A1, XREAL_1: 15;

          then

           A5: ( len W2) = lenW2 by Lm22;

          now

            let x1,x2 be object;

            assume that

             A6: x1 in ( dom f) and

             A7: x2 in ( dom f) and

             A8: (f . x1) = (f . x2);

            consider a1,b1 be object such that

             A9: x1 = [a1, b1] by A3, A6, RELAT_1:def 1;

            

             A10: b1 = (vs1 . a1) by A3, A6, A9, FUNCT_1: 1;

            

             A11: (f . x1) = (x1 `2 ) by A3, A6

            .= b1 by A9;

            consider a2,b2 be object such that

             A12: x2 = [a2, b2] by A3, A7, RELAT_1:def 1;

            

             A13: a2 in ( dom vs1) by A3, A7, A12, FUNCT_1: 1;

            

             A14: a1 in ( dom vs1) by A3, A6, A9, FUNCT_1: 1;

            

             A15: b2 = (vs1 . a2) by A3, A7, A12, FUNCT_1: 1;

            

             A16: (f . x2) = (x2 `2 ) by A3, A7

            .= b2 by A12;

            reconsider a1, a2 as Element of NAT by A14, A13;

             A17:

            now

              let n1,n2 be Element of NAT ;

              assume that

               A18: n1 < n2 and

               A19: n1 in ( dom vs1) and

               A20: n2 in ( dom vs1) and

               A21: (vs1 . n1) = (vs1 . n2);

              

               A22: ((2 * n2) - 1) in ( dom W2) by A20, Th71;

              

               A23: ((2 * n1) - 1) in ( dom W2) by A19, Th71;

              then

              reconsider a = ((2 * n1) - 1), b = ((2 * n2) - 1) as odd Element of NAT by A22;

              

               A24: (W2 . b) = (W . b) by A4, A22, Lm23;

              

               A25: n2 <= ( len vs1) by A20, FINSEQ_3: 25;

              1 <= n2 by A20, FINSEQ_3: 25;

              then

               A26: (vs1 . n2) = (W2 . b) by A25, Def14;

              

               A27: n1 <= ( len vs1) by A19, FINSEQ_3: 25;

              1 <= n1 by A19, FINSEQ_3: 25;

              then

               A28: (vs1 . n1) = (W2 . a) by A27, Def14;

              b <= lenW2 by A5, A22, FINSEQ_3: 25;

              then

               A29: b < ( len W) by A4, XXREAL_0: 2;

              (2 * n1) < (2 * n2) by A18, XREAL_1: 68;

              then

               A30: a < b by XREAL_1: 14;

              (W2 . a) = (W . a) by A4, A23, Lm23;

              hence contradiction by A21, A28, A26, A24, A30, A29, Def28;

            end;

            now

              assume

               A31: a1 <> a2;

              now

                per cases ;

                  suppose a1 <= a2;

                  then a1 < a2 by A31, XXREAL_0: 1;

                  hence contradiction by A8, A11, A16, A14, A10, A13, A15, A17;

                end;

                  suppose a1 > a2;

                  hence contradiction by A8, A11, A16, A14, A10, A13, A15, A17;

                end;

              end;

              hence contradiction;

            end;

            hence x1 = x2 by A8, A9, A12, A11, A16;

          end;

          then

           A32: f is one-to-one by FUNCT_1:def 4;

          now

            let y be object;

            assume y in ( rng f);

            then

            consider x be object such that

             A33: x in ( dom f) and

             A34: (f . x) = y by FUNCT_1:def 3;

            consider a,b be object such that

             A35: x = [a, b] by A3, A33, RELAT_1:def 1;

            y = (x `2 ) by A3, A33, A34;

            then

             A36: y = b by A35;

            

             A37: b = (vs1 . a) by A3, A33, A35, FUNCT_1: 1;

            a in ( dom vs1) by A3, A33, A35, FUNCT_1: 1;

            then y in ( rng vs1) by A36, A37, FUNCT_1:def 3;

            hence y in ( the_Vertices_of G);

          end;

          then ( rng f) c= ( the_Vertices_of G) by TARSKI:def 3;

          then ( Segm ( card vs1)) c= ( Segm ( card ( the_Vertices_of G))) by A3, A32, CARD_1: 10;

          then ( card vs1) <= ( card ( the_Vertices_of G)) by NAT_1: 39;

          then ( len vs1) <= (G .order() ) by GLIB_000:def 24;

          then

           A38: (( len vs1) + 1) <= ((G .order() ) + 1) by XREAL_1: 7;

          

           A39: lenW2 < (( len W) - 0 ) by A1, XREAL_1: 15;

          then

           A40: (W . (lenW2 + 1)) Joins ((W . lenW2),(W . (lenW2 + 2)),G) by Def3;

          1 <= lenW2 by ABIAN: 12;

          then (W2 .last() ) = (W . lenW2) by A39, Lm16, JORDAN12: 2;

          then (W .vertexSeq() ) = (vs1 ^ <*(W . (lenW2 + 2))*>) by A2, A40, Th73;

          then ( len (W .vertexSeq() )) = (( len vs1) + ( len <*(W . (lenW2 + 2))*>)) by FINSEQ_1: 22;

          hence thesis by A38, FINSEQ_1: 39;

        end;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:155

    for G be _Graph, W be vertex-distinct Walk of G, e,v be object st e Joins ((W .last() ),v,G) & not v in (W .vertices() ) holds (W .addEdge e) is vertex-distinct

    proof

      let G be _Graph, W be vertex-distinct Walk of G, e,v be object;

      assume that

       A1: e Joins ((W .last() ),v,G) and

       A2: not v in (W .vertices() );

      set W2 = (W .addEdge e);

      

       A3: ( len W2) = (( len W) + 2) by A1, Lm37;

       A4:

      now

        let n be odd Element of NAT ;

        assume that

         A5: n <= ( len W2) and

         A6: n > ( len W);

        (( len W) + 1) <= n by A6, NAT_1: 13;

        then (( len W) + 1) < n by XXREAL_0: 1;

        then ((( len W) + 1) + 1) <= n by NAT_1: 13;

        hence n = ( len W2) by A3, A5, XXREAL_0: 1;

        hence (W2 . n) = v by A1, A3, Lm38;

      end;

      now

        let m,n be odd Element of NAT ;

        assume that

         A7: m <= ( len W2) and

         A8: n <= ( len W2) and

         A9: (W2 . m) = (W2 . n);

        

         A10: 1 <= n by ABIAN: 12;

        

         A11: 1 <= m by ABIAN: 12;

        now

          per cases ;

            suppose

             A12: m <= ( len W);

            then m in ( dom W) by A11, FINSEQ_3: 25;

            then

             A13: (W2 . m) = (W . m) by A1, Lm38;

            now

              per cases ;

                suppose

                 A14: n <= ( len W);

                then n in ( dom W) by A10, FINSEQ_3: 25;

                then (W2 . n) = (W . n) by A1, Lm38;

                hence m = n by A9, A12, A13, A14, Def29;

              end;

                suppose n > ( len W);

                then (W . m) = v by A4, A8, A9, A13;

                hence m = n by A2, A12, Lm45;

              end;

            end;

            hence m = n;

          end;

            suppose

             A15: m > ( len W);

            then

             A16: (W2 . m) = v by A4, A7;

            

             A17: m = ( len W2) by A4, A7, A15;

            now

              per cases ;

                suppose

                 A18: n <= ( len W);

                then n in ( dom W) by A10, FINSEQ_3: 25;

                then v = (W . n) by A1, A9, A16, Lm38;

                hence m = n by A2, A18, Lm45;

              end;

                suppose n > ( len W);

                hence m = n by A4, A8, A17;

              end;

            end;

            hence m = n;

          end;

        end;

        hence m = n;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:156

    for e,x be object holds e Joins (x,x,G) implies (G .walkOf (x,e,x)) is Cycle-like

    proof

      let e,x be object;

      set W = (G .walkOf (x,e,x));

      assume e Joins (x,x,G);

      then ( len W) = 3 by Th13;

      then W is non trivial by Lm54;

      hence thesis;

    end;

    theorem :: GLIB_001:157

    e Joins (x,y,G) & e in (W1 .edges() ) & W1 is Cycle-like implies ex W2 be Walk of G st W2 is_Walk_from (x,y) & not e in (W2 .edges() )

    proof

      assume that

       A1: e Joins (x,y,G) and

       A2: e in (W1 .edges() ) and

       A3: W1 is Cycle-like;

      consider v1,v2 be Vertex of G, n be odd Element of NAT such that

       A4: (n + 2) <= ( len W1) and

       A5: v1 = (W1 . n) and

       A6: e = (W1 . (n + 1)) and

       A7: v2 = (W1 . (n + 2)) and

       A8: e Joins (v1,v2,G) by A2, Lm47;

      set WA = (W1 .cut ((n + 2),( len W1))), WB = (W1 .cut (((2 * 0 ) + 1),n));

      

       A9: (WA .last() ) = (W1 .last() ) by A4, Lm16;

      

       A10: ((n + 2) - 2) < (( len W1) - 0 ) by A4, XREAL_1: 15;

       A11:

      now

        assume e in (WB .edges() );

        then

        consider m be even Element of NAT such that

         A12: 1 <= m and

         A13: m <= ( len WB) and

         A14: (WB . m) = e by Lm46;

        m in ( dom WB) by A12, A13, FINSEQ_3: 25;

        then

         A15: (W1 . m) = (W1 . (n + 1)) by A6, A10, A14, Lm23;

        ( len WB) = n by A10, Lm22;

        then

         A16: (m + 0 ) < (n + 1) by A13, XREAL_1: 8;

        (n + 1) <= ( len W1) by A10, NAT_1: 13;

        hence contradiction by A3, A12, A15, A16, Lm57;

      end;

      1 <= n by ABIAN: 12;

      then WB is_Walk_from ((W1 .first() ),v1) by A5, A10, Lm16;

      then

       A17: WB is_Walk_from ((W1 .last() ),v1) by A3, Def24;

      

       A18: WA is_Walk_from (v2,(W1 . ( len W1))) by A4, A7, Lm16;

      then (WA .append WB) is_Walk_from (v2,v1) by A17, Th29;

      then

       A19: ((WA .append WB) .reverse() ) is_Walk_from (v1,v2) by Th22;

       A20:

      now

        assume e in (WA .edges() );

        then

        consider m be even Element of NAT such that

         A21: 1 <= m and

         A22: m <= ( len WA) and

         A23: (WA . m) = e by Lm46;

        reconsider maa1 = (m - 1) as odd Element of NAT by A21, INT_1: 5;

        

         A24: maa1 < (( len WA) - 0 ) by A22, XREAL_1: 15;

        then ((n + 2) + maa1) in ( dom W1) by A4, Lm15;

        then

         A25: ((n + 2) + maa1) <= ( len W1) by FINSEQ_3: 25;

        (maa1 + 1) = m;

        then

         A26: e = (W1 . ((n + 2) + maa1)) by A4, A23, A24, Lm15;

        (n + 1) < ((n + 1) + 1) by NAT_1: 13;

        then

         A27: ((n + 1) + 0 ) < ((n + 2) + maa1) by XREAL_1: 8;

        1 <= (n + 1) by NAT_1: 12;

        hence contradiction by A3, A6, A26, A25, A27, Lm57;

      end;

      (WB .first() ) = (W1 .last() ) by A17;

      then ((WA .append WB) .edges() ) = ((WA .edges() ) \/ (WB .edges() )) by A9, Th100;

      then

       A28: not e in ((WA .append WB) .edges() ) by A20, A11, XBOOLE_0:def 3;

      then

       A29: not e in (((WA .append WB) .reverse() ) .edges() ) by Th105;

      now

        per cases by A1, A8, GLIB_000: 15;

          suppose x = v1 & y = v2;

          hence thesis by A29, A19;

        end;

          suppose x = v2 & y = v1;

          hence thesis by A18, A17, A28, Th29;

        end;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:158

    W is Subwalk of W by Lm70;

    theorem :: GLIB_001:159

    for W1 be Walk of G, W2 be Subwalk of W1, W3 be Subwalk of W2 holds W3 is Subwalk of W1 by Lm71;

    theorem :: GLIB_001:160

    W1 is Subwalk of W2 implies (W1 is_Walk_from (x,y) iff W2 is_Walk_from (x,y))

    proof

      assume

       A1: W1 is Subwalk of W2;

      hereby

        

         A2: W1 is_Walk_from ((W2 .first() ),(W2 .last() )) by A1, Def32;

        assume

         A3: W1 is_Walk_from (x,y);

        then (W1 .last() ) = y;

        then

         A4: y = (W2 .last() ) by A2;

        (W1 .first() ) = x by A3;

        then x = (W2 .first() ) by A2;

        hence W2 is_Walk_from (x,y) by A4;

      end;

      assume

       A5: W2 is_Walk_from (x,y);

      then

       A6: (W2 .last() ) = y;

      (W2 .first() ) = x by A5;

      hence thesis by A1, A6, Def32;

    end;

    theorem :: GLIB_001:161

    

     Th159: W1 is Subwalk of W2 implies (W1 .first() ) = (W2 .first() ) & (W1 .last() ) = (W2 .last() )

    proof

      assume W1 is Subwalk of W2;

      then W1 is_Walk_from ((W2 .first() ),(W2 .last() )) by Def32;

      hence thesis;

    end;

    theorem :: GLIB_001:162

    W1 is Subwalk of W2 implies ( len W1) <= ( len W2) by Lm72;

    theorem :: GLIB_001:163

    

     Th161: W1 is Subwalk of W2 implies (W1 .edges() ) c= (W2 .edges() ) & (W1 .vertices() ) c= (W2 .vertices() )

    proof

      assume

       A1: W1 is Subwalk of W2;

      then

      consider es be Subset of (W2 .edgeSeq() ) such that

       A2: (W1 .edgeSeq() ) = ( Seq es) by Def32;

      now

        let e be object;

        assume e in (W1 .edges() );

        then

        consider n be even Element of NAT such that

         A3: 1 <= n and

         A4: n <= ( len W1) and

         A5: (W1 . n) = e by Lm46;

        

         A6: (W1 . n) = (( Seq es) . (n div 2)) by A2, A3, A4, Lm40;

        (n div 2) in ( dom ( Seq es)) by A2, A3, A4, Lm40;

        then ex m be Element of NAT st m in ( dom (W2 .edgeSeq() )) & (n div 2) <= m & (W1 . n) = ((W2 .edgeSeq() ) . m) by A6, Th3;

        hence e in (W2 .edges() ) by A5, Th102;

      end;

      hence

       A7: (W1 .edges() ) c= (W2 .edges() ) by TARSKI:def 3;

      now

        per cases ;

          suppose

           A8: W1 is trivial;

          now

            let v be object;

            assume v in (W1 .vertices() );

            then

            consider n be odd Element of NAT such that

             A9: n <= ( len W1) and

             A10: (W1 . n) = v by Lm45;

            

             A11: 1 <= n by ABIAN: 12;

            n <= 1 by A8, A9, Lm55;

            then v = (W1 .first() ) by A10, A11, XXREAL_0: 1;

            then v = (W2 .first() ) by A1, Th159;

            hence v in (W2 .vertices() ) by Th86;

          end;

          hence thesis by TARSKI:def 3;

        end;

          suppose W1 is non trivial;

          hence thesis by A7, Th132;

        end;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:164

    

     Th162: W1 is Subwalk of W2 implies for m be odd Element of NAT st m <= ( len W1) holds ex n be odd Element of NAT st m <= n & n <= ( len W2) & (W1 . m) = (W2 . n)

    proof

      assume

       A1: W1 is Subwalk of W2;

      let m be odd Element of NAT such that

       A2: m <= ( len W1);

      

       A3: ex es be Subset of (W2 .edgeSeq() ) st (W1 .edgeSeq() ) = ( Seq es) by A1, Def32;

      now

        per cases by A2, XXREAL_0: 1;

          suppose

           A4: m < ( len W1);

          then

           A5: (W1 . (m + 1)) Joins ((W1 . m),(W1 . (m + 2)),G) by Def3;

          reconsider m1 = (m + 1) as even Element of NAT ;

          

           A6: 1 <= m1 by NAT_1: 12;

          

           A7: m1 <= ( len W1) by A4, NAT_1: 13;

          then

           A8: (W1 . m1) = ((W1 .edgeSeq() ) . (m1 div 2)) by A6, Lm40;

          (m1 div 2) in ( dom (W1 .edgeSeq() )) by A6, A7, Lm40;

          then

          consider x be Element of NAT such that

           A9: x in ( dom (W2 .edgeSeq() )) and

           A10: (m1 div 2) <= x and

           A11: (W1 . m1) = ((W2 .edgeSeq() ) . x) by A3, A8, Th3;

          set n = (2 * x);

          

           A12: 1 <= x by A9, FINSEQ_3: 25;

          2 divides m1 by PEPIN: 22;

          then (2 * (m1 div 2)) = m1 by NAT_D: 3;

          then m1 <= n by A10, XREAL_1: 64;

          then

           A13: (m1 - 1) <= (n - 1) by XREAL_1: 13;

          

           A14: x <= ( len (W2 .edgeSeq() )) by A9, FINSEQ_3: 25;

          

           A15: n in ( dom W2) by A9, Lm41;

          then 1 <= n by FINSEQ_3: 25;

          then

          reconsider naa1 = (n - 1) as odd Element of NAT by INT_1: 5;

          n <= ( len W2) by A15, FINSEQ_3: 25;

          then

           A16: naa1 < (( len W2) - 0 ) by XREAL_1: 15;

          then (W2 . (naa1 + 1)) Joins ((W2 . naa1),(W2 . (naa1 + 2)),G) by Def3;

          then

           A17: (W1 . m1) Joins ((W2 . naa1),(W2 . (naa1 + 2)),G) by A11, A12, A14, Def15;

          

           A18: (naa1 + 2) <= ( len W2) by A16, Th1;

          now

            per cases by A5, A17, GLIB_000: 15;

              suppose (W1 . m) = (W2 . naa1);

              hence thesis by A16, A13;

            end;

              suppose (W1 . m) = (W2 . (naa1 + 2));

              hence thesis by A13, A18, NAT_1: 12;

            end;

          end;

          hence thesis;

        end;

          suppose

           A19: m = ( len W1);

          ( len W1) <= ( len W2) by A1, Lm72;

          then

           A20: m <= ( len W2) by A2, XXREAL_0: 2;

          (W1 . m) = (W1 .last() ) by A19

          .= (W2 .last() ) by A1, Th159

          .= (W2 . ( len W2));

          hence thesis by A20;

        end;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:165

    W1 is Subwalk of W2 implies for m be even Element of NAT st 1 <= m & m <= ( len W1) holds ex n be even Element of NAT st m <= n & n <= ( len W2) & (W1 . m) = (W2 . n)

    proof

      assume W1 is Subwalk of W2;

      then

       A1: ex es be Subset of (W2 .edgeSeq() ) st (W1 .edgeSeq() ) = ( Seq es) by Def32;

      let m be even Element of NAT such that

       A2: 1 <= m and

       A3: m <= ( len W1);

      

       A4: (W1 . m) = ((W1 .edgeSeq() ) . (m div 2)) by A2, A3, Lm40;

      (m div 2) in ( dom (W1 .edgeSeq() )) by A2, A3, Lm40;

      then

      consider ndiv2 be Element of NAT such that

       A5: ndiv2 in ( dom (W2 .edgeSeq() )) and

       A6: (m div 2) <= ndiv2 and

       A7: (W1 . m) = ((W2 .edgeSeq() ) . ndiv2) by A1, A4, Th3;

      

       A8: ndiv2 <= ( len (W2 .edgeSeq() )) by A5, FINSEQ_3: 25;

      2 divides m by PEPIN: 22;

      then

       A9: (2 * (m div 2)) = m by NAT_D: 3;

      (2 * ndiv2) in ( dom W2) by A5, Lm41;

      then

       A10: (2 * ndiv2) <= ( len W2) by FINSEQ_3: 25;

      1 <= ndiv2 by A5, FINSEQ_3: 25;

      then (W1 . m) = (W2 . (2 * ndiv2)) by A7, A8, Def15;

      hence thesis by A6, A9, A10, XREAL_1: 64;

    end;

    theorem :: GLIB_001:166

    for W1 be Trail of G st W1 is non trivial holds ex W2 be Path of W1 st W2 is non trivial

    proof

      let W1 be Trail of G;

      assume W1 is non trivial;

      then

       A1: 1 <> ( len W1) by Lm55;

      1 <= ( len W1) by ABIAN: 12;

      then

       A2: 1 < ( len W1) by A1, XXREAL_0: 1;

      now

        per cases ;

          suppose

           A3: W1 is open;

          set P = the Path of W1;

          take P;

          

           A4: (P .first() ) = (W1 .first() ) by Th159;

          

           A5: (P .last() ) = (W1 .last() ) by Th159;

          (W1 .first() ) <> (W1 .last() ) by A3;

          hence P is non trivial by A4, A5, Lm55;

        end;

          suppose

           A6: W1 is closed;

          defpred P[ Nat] means $1 is odd & 1 < $1 & $1 <= ( len W1) & (W1 . $1) = (W1 . ( len W1));

          

           A7: ex k be Nat st P[k] by A2;

          consider k be Nat such that

           A8: P[k] & for m be Nat st P[m] holds k <= m from NAT_1:sch 5( A7);

          reconsider k as odd Element of NAT by A8, ORDINAL1:def 12;

          (1 + 1) < (k + 1) by A8, XREAL_1: 8;

          then 2 <= k by NAT_1: 13;

          then

          reconsider k2 = (k - (2 * 1)) as odd Element of NAT by INT_1: 5;

          set W3 = (W1 .remove (k,( len W1)));

          set W4 = (W3 .cut (((2 * 0 ) + 1),k2));

          set W5 = the Path of W4;

          consider es5 be Subset of (W4 .edgeSeq() ) such that

           A9: (W5 .edgeSeq() ) = ( Seq es5) by Def32;

          

           A10: (W4 .edgeSeq() ) c= (W3 .edgeSeq() ) by Lm43;

          (W1 . k) = (W1 .last() ) by A8;

          then

           A11: W3 = (W1 .cut (1,k)) by Th55;

          then (W3 .edgeSeq() ) c= (W1 .edgeSeq() ) by Lm43;

          then (W4 .edgeSeq() ) c= (W1 .edgeSeq() ) by A10, XBOOLE_1: 1;

          then

          reconsider es5 as Subset of (W1 .edgeSeq() ) by XBOOLE_1: 1;

          

           A12: W5 is_Walk_from ((W4 .first() ),(W4 .last() )) by Def32;

          

           A13: (( len W3) + ( len W1)) = (( len W1) + k) by A8, Lm24;

          then

           A14: k2 <= (( len W3) - 0 ) by XREAL_1: 13;

          

           A15: 1 <= k2 by ABIAN: 12;

          then (W4 .last() ) = (W3 . k2) by A14, Lm16;

          then

           A16: (W5 .last() ) = (W3 . k2) by A12;

          k2 in ( dom W3) by A14, A15, FINSEQ_3: 25;

          then

           A17: (W5 .last() ) = (W1 . k2) by A8, A16, A11, Lm23;

          (W4 .first() ) = (W3 . 1) by A14, A15, Lm16;

          then

           A18: (W5 .first() ) = (W3 . 1) by A12;

          

           A19: (W1 . 1) = (W1 . ( len W1)) by A6;

           A20:

          now

            1 <= ( len W3) by ABIAN: 12;

            then

             A21: ((2 * 0 ) + 1) in ( dom W3) by FINSEQ_3: 25;

            assume that

             A22: W5 is non trivial and

             A23: W5 is closed;

            (W5 .first() ) = (W1 . k2) by A17, A23;

            then

             A24: (W1 . k2) = (W1 . ( len W1)) by A19, A8, A18, A11, A21, Lm23;

            now

              assume k2 = 1;

              then ( len W4) = 1 by A14, Lm22;

              then

               A25: ( len W5) <= 1 by Lm72;

              1 <= ( len W5) by ABIAN: 12;

              then ( len W5) = 1 by A25, XXREAL_0: 1;

              hence contradiction by A22, Lm55;

            end;

            then

             A26: 1 < k2 by A15, XXREAL_0: 1;

            

             A27: k2 < (k - 0 ) by XREAL_1: 15;

            then k2 <= ( len W1) by A8, XXREAL_0: 2;

            hence contradiction by A8, A24, A26, A27;

          end;

          set e = (W1 . (k2 + 1)), W2 = (W5 .addEdge e);

          k2 < (( len W1) - 0 ) by A8, XREAL_1: 15;

          then

           A28: e Joins ((W1 . k2),(W1 . (k2 + 2)),G) by Def3;

          

           A29: k2 < (( len W3) - 0 ) by A13, XREAL_1: 15;

          then

           A30: ( len W4) = k2 by Lm22;

           A31:

          now

            let m be odd Element of NAT ;

            assume that

             A32: 1 < m and

             A33: m <= ( len W5);

            consider n be odd Element of NAT such that

             A34: m <= n and

             A35: n <= ( len W4) and

             A36: (W5 . m) = (W4 . n) by A33, Th162;

            

             A37: 1 < n by A32, A34, XXREAL_0: 2;

            then n in ( dom W4) by A35, FINSEQ_3: 25;

            then

             A38: (W5 . m) = (W3 . n) by A14, A36, Lm23;

            

             A39: (n + 0 ) < (k2 + 2) by A30, A35, XREAL_1: 8;

            then

             A40: n <= ( len W1) by A8, XXREAL_0: 2;

            n in ( dom W3) by A13, A37, A39, FINSEQ_3: 25;

            then (W5 . m) = (W1 . n) by A8, A11, A38, Lm23;

            hence (W5 . m) <> (W1 . k) by A8, A37, A39, A40;

          end;

          (k2 + 1) <= k by A13, A29, NAT_1: 13;

          then

           A41: (k2 + 1) <= ( len W1) by A8, XXREAL_0: 2;

          now

            assume

             A42: e in (W5 .edges() );

            (W5 .edges() ) c= (W4 .edges() ) by Th161;

            then

            consider n be even Element of NAT such that

             A43: 1 <= n and

             A44: n <= ( len W4) and

             A45: (W4 . n) = e by A42, Lm46;

            

             A46: n < (k2 + 1) by A30, A44, NAT_1: 13;

            n <= (k2 + 2) by A30, A44, NAT_1: 12;

            then

             A47: n in ( dom W3) by A13, A43, FINSEQ_3: 25;

            n in ( dom W4) by A43, A44, FINSEQ_3: 25;

            then e = (W3 . n) by A14, A45, Lm23;

            then (W1 . (k2 + 1)) = (W1 . n) by A8, A11, A47, Lm23;

            hence contradiction by A41, A43, A46, Lm57;

          end;

          then

          reconsider W2 as Path of G by A28, A17, A20, A31, Th148;

          set g = (((k2 + 1) div 2) .--> e), es = (es5 +* g);

          

           A48: ( dom es) = (( dom es5) \/ ( dom g)) by FUNCT_4:def 1;

          

           A50: (g . ((k2 + 1) div 2)) = e by FUNCOP_1: 72;

           A51:

          now

            let z be object;

            assume

             A52: z in es;

            then

            consider x,y be object such that

             A53: z = [x, y] by RELAT_1:def 1;

            

             A54: x in ( dom es) by A52, A53, FUNCT_1: 1;

            

             A55: y = (es . x) by A52, A53, FUNCT_1: 1;

            now

              per cases ;

                suppose

                 A56: x in ( dom g);

                then

                 A57: x = ((k2 + 1) div 2) by TARSKI:def 1;

                

                 A58: 1 <= (k2 + 1) by NAT_1: 12;

                then (W1 . (k2 + 1)) = ((W1 .edgeSeq() ) . x) by A41, A57, Lm40;

                then

                 A59: ((W1 .edgeSeq() ) . x) = y by A48, A50, A54, A55, A56, A57, FUNCT_4:def 1;

                x in ( dom (W1 .edgeSeq() )) by A41, A57, A58, Lm40;

                hence z in (W1 .edgeSeq() ) by A53, A59, FUNCT_1: 1;

              end;

                suppose

                 A60: not x in ( dom g);

                then

                 A61: x in ( dom es5) by A48, A54, XBOOLE_0:def 3;

                y = (es5 . x) by A48, A54, A55, A60, FUNCT_4:def 1;

                then z in es5 by A53, A61, FUNCT_1: 1;

                hence z in (W1 .edgeSeq() );

              end;

            end;

            hence z in (W1 .edgeSeq() );

          end;

          then es c= (W1 .edgeSeq() ) by TARSKI:def 3;

          then ( dom es) c= ( dom (W1 .edgeSeq() )) by RELAT_1: 11;

          then

           A62: ( dom es) c= ( Seg ( len (W1 .edgeSeq() ))) by FINSEQ_1:def 3;

          then

          reconsider es as FinSubsequence by FINSEQ_1:def 12;

          reconsider es as Subset of (W1 .edgeSeq() ) by A51, TARSKI:def 3;

          

           A63: ( dom es5) c= ( dom (W4 .edgeSeq() )) by FINSEQ_6: 151;

          now

            thus ( dom es5) c= ( Seg ( len (W1 .edgeSeq() ))) & ( dom g) c= ( Seg ( len (W1 .edgeSeq() ))) by A48, A62, XBOOLE_1: 11;

            let x,y be Nat such that

             A64: x in ( dom es5) and

             A65: y in ( dom g);

            x <= ( len (W4 .edgeSeq() )) by A63, A64, FINSEQ_3: 25;

            then (2 * x) <= (2 * ( len (W4 .edgeSeq() ))) by XREAL_1: 64;

            then ((2 * x) + 1) <= ((2 * ( len (W4 .edgeSeq() ))) + 1) by XREAL_1: 7;

            then

             A66: ((2 * x) + 1) <= k2 by A30, Def15;

            

             A67: 2 divides (k2 + 1) by PEPIN: 22;

            y = ((k2 + 1) div 2) by A65, TARSKI:def 1;

            then (2 * y) = (k2 + 1) by A67, NAT_D: 3;

            then ((2 * x) + 1) < (2 * y) by A66, NAT_1: 13;

            then

             A68: (((2 * x) + 1) - 1) < ((2 * y) - 0 ) by XREAL_1: 14;

            then x <= y by XREAL_1: 68;

            hence x < y by A68, XXREAL_0: 1;

          end;

          then

           A69: ( Sgm ( dom es)) = (( Sgm ( dom es5)) ^ ( Sgm ( dom g))) by A48, FINSEQ_3: 42;

          

           A70: k2 in ( dom W3) by A15, A29, FINSEQ_3: 25;

          then

           A71: (W5 .last() ) = (W1 . k2) by A8, A16, A11, Lm23;

          now

            now

              assume (( dom es5) /\ ( dom g)) <> {} ;

              then

              consider x be object such that

               A72: x in (( dom es5) /\ ( dom g)) by XBOOLE_0:def 1;

              x in ( dom g) by A72;

              then

               A73: x = ((k2 + 1) div 2) by TARSKI:def 1;

              x in ( dom es5) by A72, XBOOLE_0:def 4;

              then ((k2 + 1) div 2) <= ( len (W4 .edgeSeq() )) by A63, A73, FINSEQ_3: 25;

              then

               A74: (2 * ((k2 + 1) div 2)) <= (2 * ( len (W4 .edgeSeq() ))) by XREAL_1: 64;

              2 divides (k2 + 1) by PEPIN: 22;

              then (k2 + 1) <= (2 * ( len (W4 .edgeSeq() ))) by A74, NAT_D: 3;

              then ((k2 + 1) + 1) <= ((2 * ( len (W4 .edgeSeq() ))) + 1) by XREAL_1: 7;

              then ((1 + 1) + k2) <= ( 0 + k2) by A30, Def15;

              hence contradiction by XREAL_1: 6;

            end;

            then

             A75: ( dom es5) misses ( dom g) by XBOOLE_0:def 7;

            ( len W2) = (( len W5) + 2) by A28, A71, Lm37;

            then

             A76: (( len W5) + 2) = ((2 * ( len (W2 .edgeSeq() ))) + 1) by Def15;

            

             A77: ( len ( Sgm ( dom es5))) = ( card ( dom es5)) by A48, A62, FINSEQ_3: 39, XBOOLE_1: 11

            .= ( card es5) by CARD_1: 62

            .= ( len (W5 .edgeSeq() )) by A9, Th4;

             A78:

            now

              assume ((k2 + 1) div 2) = 0 ;

              then

               A79: (2 * ((k2 + 1) div 2)) = (2 * 0 );

              2 divides (k2 + 1) by PEPIN: 22;

              hence contradiction by A79, NAT_D: 3;

            end;

            

             A80: ( Sgm ( dom g)) = <*((k2 + 1) div 2)*> by A78, FINSEQ_3: 44;

            then

             A81: ( len ( Sgm ( dom g))) = 1 by FINSEQ_1: 40;

            

             A82: (( Sgm ( dom g)) . 1) = ((k2 + 1) div 2) by A80, FINSEQ_1: 40;

            set h = ( Sgm ( dom es));

            

             A83: ( Seq es) = (es * h) by FINSEQ_1:def 14;

            ( len ( Seq es)) = ( card es) by Th4

            .= ( card ( dom es)) by CARD_1: 62;

            

            then ( len ( Seq es)) = (( card ( dom es5)) + ( card ( dom g))) by A48, A75, CARD_2: 40

            .= (( card ( dom es5)) + 1) by CARD_1: 30

            .= (( card es5) + 1) by CARD_1: 62

            .= (( len (W5 .edgeSeq() )) + 1) by A9, Th4;

            

            then

             A84: ((2 * ( len ( Seq es))) + 1) = (((2 * ( len (W5 .edgeSeq() ))) + 1) + 2)

            .= ((2 * ( len (W2 .edgeSeq() ))) + 1) by A76, Def15;

            hence ( len (W2 .edgeSeq() )) = ( len ( Seq es));

            let x be Nat;

            assume that

             A85: 1 <= x and

             A86: x <= ( len (W2 .edgeSeq() ));

            

             A87: ( dom es5) c= ( Seg ( len (W1 .edgeSeq() ))) by A48, A62, XBOOLE_1: 11;

            

             A88: x in ( dom ( Seq es)) by A84, A85, A86, FINSEQ_3: 25;

            then

             A89: (h . x) in ( dom es) by A83, FUNCT_1: 11;

            

             A90: ( dom h) = ( Seg (( len ( Sgm ( dom es5))) + ( len ( Sgm ( dom g))))) by A69, FINSEQ_1:def 7;

            

             A91: e Joins ((W5 .last() ),(W1 . k),G) by A8, A28, A16, A11, A70, Lm23;

            

             A92: (( Seq es) . x) = (es . (h . x)) by A83, A88, FUNCT_1: 12;

            

             A93: x in ( dom h) by A83, A88, FUNCT_1: 11;

            now

              per cases ;

                suppose

                 A94: x <= ( len ( Sgm ( dom es5)));

                then

                 A95: x in ( dom ( Sgm ( dom es5))) by A85, FINSEQ_3: 25;

                then

                 A96: (h . x) = (( Sgm ( dom es5)) . x) by A69, FINSEQ_1:def 7;

                ( rng ( Sgm ( dom es5))) = ( dom es5) by A87, FINSEQ_1:def 13;

                then (h . x) in ( dom es5) by A95, A96, FUNCT_1:def 3;

                then not (h . x) in ( dom g) by A75, XBOOLE_0: 3;

                then

                 A97: (( Seq es) . x) = (es5 . (( Sgm ( dom es5)) . x)) by A48, A89, A92, A96, FUNCT_4:def 1;

                

                 A98: x in ( dom (W5 .edgeSeq() )) by A85, A77, A94, FINSEQ_3: 25;

                then

                 A99: (2 * x) in ( dom W5) by Lm41;

                ((W5 .edgeSeq() ) . x) = (W5 . (2 * x)) by A85, A77, A94, Def15;

                

                then

                 A100: (W2 . (2 * x)) = ((W5 .edgeSeq() ) . x) by A91, A99, Lm38

                .= ((es5 * ( Sgm ( dom es5))) . x) by A9, FINSEQ_1:def 14;

                x in ( dom (es5 * ( Sgm ( dom es5)))) by A9, A98, FINSEQ_1:def 14;

                hence (( Seq es) . x) = (W2 . (2 * x)) by A97, A100, FUNCT_1: 12;

              end;

                suppose ( len ( Sgm ( dom es5))) < x;

                then

                 A101: (( len ( Sgm ( dom es5))) + 1) <= x by NAT_1: 13;

                x <= (( len ( Sgm ( dom es5))) + 1) by A93, A90, A81, FINSEQ_1: 1;

                then

                 A102: x = (( len ( Sgm ( dom es5))) + 1) by A101, XXREAL_0: 1;

                1 in ( dom ( Sgm ( dom g))) by A81, FINSEQ_3: 25;

                then

                 A103: (h . x) = ((k2 + 1) div 2) by A69, A82, A102, FINSEQ_1:def 7;

                then (h . x) in ( dom g) by TARSKI:def 1;

                

                then

                 A104: (( Seq es) . x) = (g . ((k2 + 1) div 2)) by A48, A89, A92, A103, FUNCT_4:def 1

                .= e by FUNCOP_1: 72

                .= (W2 . (( len W5) + 1)) by A91, Lm38;

                (2 * x) = (((2 * ( len (W5 .edgeSeq() ))) + 1) + 1) by A77, A102

                .= (( len W5) + 1) by Def15;

                hence (( Seq es) . x) = (W2 . (2 * x)) by A104;

              end;

            end;

            hence ((W2 .edgeSeq() ) . x) = (( Seq es) . x) by A85, A86, Def15;

          end;

          then

           A105: (W2 .edgeSeq() ) = ( Seq es) by FINSEQ_1: 14;

          1 <= ( len W3) by ABIAN: 12;

          then ((2 * 0 ) + 1) in ( dom W3) by FINSEQ_3: 25;

          then (W5 .first() ) = (W1 .first() ) by A8, A18, A11, Lm23;

          then W5 is_Walk_from ((W1 .first() ),(W1 . k2)) by A71;

          then W2 is_Walk_from ((W1 .first() ),(W1 .last() )) by A8, A28, Lm39;

          then

          reconsider W2 as Path of W1 by A105, Def32;

          take W2;

          thus W2 is non trivial by A28, A17, Th130;

        end;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:167

    

     Th165: for G1 be _Graph, G2 be Subgraph of G1, W be Walk of G2 holds W is Walk of G1

    proof

      let G1 be _Graph, G2 be Subgraph of G1, W be Walk of G2;

      set VG1 = ( the_Vertices_of G1), VG2 = ( the_Vertices_of G2);

      set EG1 = ( the_Edges_of G1), EG2 = ( the_Edges_of G2);

      

       A1: EG2 c= (VG1 \/ EG1) by XBOOLE_1: 10;

       A2:

      now

        thus ( len W) is odd;

        (W . 1) in VG2 by Def3;

        hence (W . 1) in VG1;

        let n be odd Element of NAT ;

        assume n < ( len W);

        then (W . (n + 1)) Joins ((W . n),(W . (n + 2)),G2) by Def3;

        hence (W . (n + 1)) Joins ((W . n),(W . (n + 2)),G1) by GLIB_000: 72;

      end;

      VG2 c= (VG1 \/ EG1) by XBOOLE_1: 10;

      then (VG2 \/ EG2) c= (VG1 \/ EG1) by A1, XBOOLE_1: 8;

      then for y be object st y in ( rng W) holds y in (VG1 \/ EG1) by TARSKI:def 3;

      then ( rng W) c= (VG1 \/ EG1) by TARSKI:def 3;

      then W is FinSequence of (VG1 \/ EG1) by FINSEQ_1:def 4;

      hence thesis by A2, Def3;

    end;

    theorem :: GLIB_001:168

    

     Th166: for G1 be _Graph, G2 be Subgraph of G1, W be Walk of G1 st W is trivial & (W .first() ) in ( the_Vertices_of G2) holds W is Walk of G2

    proof

      let G1 be _Graph, G2 be Subgraph of G1, W be Walk of G1;

      assume that

       A1: W is trivial and

       A2: (W .first() ) in ( the_Vertices_of G2);

      consider v be Vertex of G1 such that

       A3: W = (G1 .walkOf v) by A1, Lm56;

      reconsider v9 = v as Vertex of G2 by A2, A3, Th12;

      W = (G2 .walkOf v9) by A3;

      hence thesis;

    end;

    theorem :: GLIB_001:169

    

     Th167: for G1 be _Graph, G2 be Subgraph of G1, W be Walk of G1 st W is non trivial & (W .edges() ) c= ( the_Edges_of G2) holds W is Walk of G2

    proof

      let G1 be _Graph, G2 be Subgraph of G1, W be Walk of G1;

      assume that

       A1: W is non trivial and

       A2: (W .edges() ) c= ( the_Edges_of G2);

      set VG2 = ( the_Vertices_of G2), EG2 = ( the_Edges_of G2);

      set WV = (W .vertices() ), WE = (W .edges() );

       A3:

      now

        let n be odd Element of NAT such that

         A4: n <= ( len W);

        now

          per cases ;

            suppose

             A5: n = ( len W);

            

             A6: 1 <= n by ABIAN: 12;

            n <> 1 by A1, A5, Lm54;

            then 1 < n by A6, XXREAL_0: 1;

            then (1 + 1) <= n by NAT_1: 13;

            then

            reconsider n5 = (n - (2 * 1)) as odd Element of NAT by INT_1: 5;

            (n5 + 1) = (n - (2 - 1));

            then

             A7: (n5 + 1) <= (( len W) - 0 ) by A5, XREAL_1: 13;

            n5 < (( len W) - 0 ) by A5, XREAL_1: 15;

            then

             A8: (W . (n5 + 1)) Joins ((W . n5),(W . (n5 + 2)),G1) by Def3;

            1 <= (n5 + 1) by NAT_1: 12;

            then (W . (n5 + 1)) in (W .edges() ) by A7, Lm46;

            then (W . (n5 + 1)) Joins ((W . n5),(W . (n5 + 2)),G2) by A2, A8, GLIB_000: 73;

            hence (W . n) in ( the_Vertices_of G2) by GLIB_000: 13;

          end;

            suppose n <> ( len W);

            then

             A9: n < ( len W) by A4, XXREAL_0: 1;

            then

             A10: (W . (n + 1)) Joins ((W . n),(W . (n + 2)),G1) by Def3;

            

             A11: 1 <= (n + 1) by NAT_1: 12;

            (n + 1) <= ( len W) by A9, NAT_1: 13;

            then (W . (n + 1)) in (W .edges() ) by A11, Lm46;

            then (W . (n + 1)) Joins ((W . n),(W . (n + 2)),G2) by A2, A10, GLIB_000: 73;

            hence (W . n) in ( the_Vertices_of G2) by GLIB_000: 13;

          end;

        end;

        hence (W . n) in VG2;

      end;

      now

        let y be object;

        assume y in ( rng W);

        then

         A12: y in (WV \/ WE) by Th99;

        now

          per cases by A12, XBOOLE_0:def 3;

            suppose y in WV;

            then ex n be odd Element of NAT st n <= ( len W) & (W . n) = y by Lm45;

            then y in VG2 by A3;

            hence y in (VG2 \/ EG2) by XBOOLE_0:def 3;

          end;

            suppose y in WE;

            hence y in (VG2 \/ EG2) by A2, XBOOLE_0:def 3;

          end;

        end;

        hence y in (VG2 \/ EG2);

      end;

      then ( rng W) c= (VG2 \/ EG2) by TARSKI:def 3;

      then

       A13: W is FinSequence of (VG2 \/ EG2) by FINSEQ_1:def 4;

      now

        reconsider aa1 = 1 as odd Element of NAT by JORDAN12: 2;

        thus ( len W) is odd;

        aa1 <= ( len W) by ABIAN: 12;

        hence (W . 1) in VG2 by A3;

        let n be odd Element of NAT ;

        

         A14: 1 <= (n + 1) by NAT_1: 12;

        assume

         A15: n < ( len W);

        then

         A16: (W . (n + 1)) Joins ((W . n),(W . (n + 2)),G1) by Def3;

        (n + 1) <= ( len W) by A15, NAT_1: 13;

        then (W . (n + 1)) in (W .edges() ) by A14, Lm46;

        hence (W . (n + 1)) Joins ((W . n),(W . (n + 2)),G2) by A2, A16, GLIB_000: 73;

      end;

      hence thesis by A13, Def3;

    end;

    theorem :: GLIB_001:170

    

     Th168: for G1 be _Graph, G2 be Subgraph of G1, W be Walk of G1 st (W .vertices() ) c= ( the_Vertices_of G2) & (W .edges() ) c= ( the_Edges_of G2) holds W is Walk of G2

    proof

      let G1 be _Graph, G2 be Subgraph of G1, W be Walk of G1;

      assume that

       A1: (W .vertices() ) c= ( the_Vertices_of G2) and

       A2: (W .edges() ) c= ( the_Edges_of G2);

      now

        per cases ;

          suppose W is non trivial;

          hence thesis by A2, Th167;

        end;

          suppose

           A3: W is trivial;

          (W .first() ) in (W .vertices() ) by Th86;

          hence thesis by A1, A3, Th166;

        end;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:171

    for G1 be non _trivial _Graph, W be Walk of G1, v be Vertex of G1, G2 be removeVertex of G1, v st not v in (W .vertices() ) holds W is Walk of G2

    proof

      let G1 be non _trivial _Graph, W be Walk of G1, v be Vertex of G1, G2 be removeVertex of G1, v;

      assume

       A1: not v in (W .vertices() );

      set EG2 = (( the_Edges_of G1) \ (v .edgesInOut() ));

      set W2 = W, VG2 = (( the_Vertices_of G1) \ {v});

      (v .edgesInOut() ) = (G1 .edgesInOut {v}) by GLIB_000:def 40;

      then

       A2: EG2 = (G1 .edgesBetween (( the_Vertices_of G1) \ {v})) by GLIB_000: 35;

      now

        let y be object;

        assume y in ( rng W2);

        then

        consider x be object such that

         A3: x in ( dom W2) and

         A4: y = (W2 . x) by FUNCT_1:def 3;

        reconsider x as Element of NAT by A3;

        

         A5: x <= ( len W2) by A3, FINSEQ_3: 25;

        now

          per cases ;

            suppose

             A6: x is odd;

             A7:

            now

              assume y in {v};

              then not y in (W .vertices() ) by A1, TARSKI:def 1;

              hence contradiction by A4, A5, A6, Lm45;

            end;

            y in ( the_Vertices_of G1) by A4, A5, A6, Lm1;

            then y in VG2 by A7, XBOOLE_0:def 5;

            hence y in (VG2 \/ EG2) by XBOOLE_0:def 3;

          end;

            suppose x is even;

            then

            reconsider x as even Element of NAT ;

            consider xaa1 be odd Element of NAT such that

             A8: xaa1 = (x - 1) and

             A9: (x - 1) in ( dom W2) and

             A10: (x + 1) in ( dom W2) and

             A11: (W2 . x) Joins ((W2 . xaa1),(W2 . (x + 1)),G1) by A3, Lm2;

            

             A12: (x + 1) <= ( len W2) by A10, FINSEQ_3: 25;

            

             A13: xaa1 <= ( len W2) by A8, A9, FINSEQ_3: 25;

             A14:

            now

              assume y in (v .edgesInOut() );

              then

               A15: y in ((v .edgesIn() ) \/ (v .edgesOut() )) by GLIB_000: 60;

              now

                per cases by A15, XBOOLE_0:def 3;

                  suppose y in (v .edgesIn() );

                  then (( the_Target_of G1) . y) = v by GLIB_000: 56;

                  hence v = (W2 . xaa1) or v = (W2 . (x + 1)) by A4, A11, GLIB_000:def 13;

                end;

                  suppose y in (v .edgesOut() );

                  then (( the_Source_of G1) . y) = v by GLIB_000: 58;

                  hence v = (W2 . xaa1) or v = (W2 . (x + 1)) by A4, A11, GLIB_000:def 13;

                end;

              end;

              then v = (W2 .vertexAt xaa1) or v = (W2 .vertexAt (x + 1)) by A13, A12, Def8;

              hence contradiction by A1, A13, A12, Th87;

            end;

            y in ( the_Edges_of G1) by A4, A11, GLIB_000:def 13;

            then y in EG2 by A14, XBOOLE_0:def 5;

            hence y in (VG2 \/ EG2) by XBOOLE_0:def 3;

          end;

        end;

        then y in (( the_Vertices_of G2) \/ EG2) by GLIB_000: 47;

        hence y in (( the_Vertices_of G2) \/ ( the_Edges_of G2)) by A2, GLIB_000: 47;

      end;

      then ( rng W2) c= (( the_Vertices_of G2) \/ ( the_Edges_of G2)) by TARSKI:def 3;

      then

      reconsider W2 as FinSequence of (( the_Vertices_of G2) \/ ( the_Edges_of G2)) by FINSEQ_1:def 4;

      now

        reconsider lenW2 = ( len W2) as odd Element of NAT ;

        thus ( len W2) is odd;

        (W .first() ) in (W .vertices() ) by Th86;

        then

         A16: not (W2 . 1) in {v} by A1, TARSKI:def 1;

        (W .first() ) in ( the_Vertices_of G1);

        then (W2 . 1) in VG2 by A16, XBOOLE_0:def 5;

        hence (W2 . 1) in ( the_Vertices_of G2) by GLIB_000: 47;

        let n be odd Element of NAT ;

        assume

         A17: n < ( len W2);

        then

         A18: (W . (n + 1)) Joins ((W . n),(W . (n + 2)),G1) by Def3;

        then

         A19: (W . (n + 1)) in ( the_Edges_of G1) by GLIB_000:def 13;

        (n + 1) <= ( len W2) by A17, NAT_1: 13;

        then (n + 1) < lenW2 by XXREAL_0: 1;

        then ((n + 1) + 1) <= ( len W2) by NAT_1: 13;

        then

         A20: (W . (n + 2)) <> v by A1, Lm45;

        (W . n) <> v by A1, A17, Lm45;

        then not (W . (n + 1)) in (v .edgesInOut() ) by A18, A20, GLIB_000: 65;

        then (W . (n + 1)) in EG2 by A19, XBOOLE_0:def 5;

        then (W . (n + 1)) in ( the_Edges_of G2) by A2, GLIB_000: 47;

        hence (W . (n + 1)) Joins ((W . n),(W . (n + 2)),G2) by A18, GLIB_000: 73;

      end;

      hence thesis by Def3;

    end;

    theorem :: GLIB_001:172

    for G1 be _Graph, W be Walk of G1, e be set, G2 be removeEdge of G1, e st not e in (W .edges() ) holds W is Walk of G2

    proof

      let G1 be _Graph, W be Walk of G1, e be set, G2 be removeEdge of G1, e;

      

       A1: ( the_Edges_of G2) = (( the_Edges_of G1) \ {e}) by GLIB_000: 53;

      assume

       A2: not e in (W .edges() );

      now

        let x be object;

        assume

         A3: x in (W .edges() );

        then not x in {e} by A2, TARSKI:def 1;

        hence x in ( the_Edges_of G2) by A1, A3, XBOOLE_0:def 5;

      end;

      then

       A4: (W .edges() ) c= ( the_Edges_of G2) by TARSKI:def 3;

      ( the_Vertices_of G2) = ( the_Vertices_of G1) by GLIB_000: 53;

      then (W .vertices() ) c= ( the_Vertices_of G2);

      hence thesis by A4, Th168;

    end;

    theorem :: GLIB_001:173

    

     Th171: for G1 be _Graph, G2 be Subgraph of G1, x,y,e be set st e Joins (x,y,G2) holds (G1 .walkOf (x,e,y)) = (G2 .walkOf (x,e,y))

    proof

      let G1 be _Graph, G2 be Subgraph of G1, x,y,e be set;

      assume

       A1: e Joins (x,y,G2);

      then

       A2: e Joins (x,y,G1) by GLIB_000: 72;

      (G2 .walkOf (x,e,y)) = <*x, e, y*> by A1, Def5;

      hence thesis by A2, Def5;

    end;

    theorem :: GLIB_001:174

    for G1 be _Graph, G2 be Subgraph of G1, W1 be Walk of G1, W2 be Walk of G2, e be set st W1 = W2 & e in ((W2 .last() ) .edgesInOut() ) holds (W1 .addEdge e) = (W2 .addEdge e)

    proof

      let G1 be _Graph, G2 be Subgraph of G1, W1 be Walk of G1, W2 be Walk of G2, e be set;

      assume that

       A1: W1 = W2 and

       A2: e in ((W2 .last() ) .edgesInOut() );

      set W2B = (G2 .walkOf ((W2 .last() ),e,((W2 .last() ) .adj e)));

      set W1B = (G1 .walkOf ((W1 .last() ),e,((W1 .last() ) .adj e)));

      

       A3: e Joins ((W2 .last() ),((W2 .last() ) .adj e),G2) by A2, GLIB_000: 67;

      ((W1 .last() ) .adj e) = ((W2 .last() ) .adj e) by A1, A2, GLIB_000: 80;

      then W1B = W2B by A1, A3, Th171;

      hence thesis by A1, Th33;

    end;

    theorem :: GLIB_001:175

    

     Th173: for G1 be _Graph, G2 be Subgraph of G1, W be Walk of G2 holds (W is closed implies W is closed Walk of G1) & (W is directed implies W is directed Walk of G1) & (W is trivial implies W is trivial Walk of G1) & (W is Trail-like implies W is Trail-like Walk of G1) & (W is Path-like implies W is Path-like Walk of G1) & (W is vertex-distinct implies W is vertex-distinct Walk of G1)

    proof

      let G1 be _Graph, G2 be Subgraph of G1, W be Walk of G2;

      reconsider W9 = W as Walk of G1 by Th165;

      hereby

        assume W is closed;

        then (W .first() ) = (W .last() );

        then (W9 .first() ) = (W9 .last() );

        hence W is closed Walk of G1 by Def24;

      end;

      hereby

        assume

         A1: W is directed;

        now

          let n be odd Element of NAT ;

          

           A2: 1 <= (n + 1) by NAT_1: 12;

          assume

           A3: n < ( len W9);

          then (n + 1) <= ( len W9) by NAT_1: 13;

          then (n + 1) in ( dom W9) by A2, FINSEQ_3: 25;

          then

           A4: (W9 . (n + 1)) in ( the_Edges_of G2) by Th7;

          (( the_Source_of G2) . (W9 . (n + 1))) = (W9 . n) by A1, A3;

          hence (( the_Source_of G1) . (W9 . (n + 1))) = (W9 . n) by A4, GLIB_000:def 32;

        end;

        hence W is directed Walk of G1 by Def25;

      end;

      hereby

        assume W is trivial;

        then ( len W9) = 1 by Lm55;

        hence W is trivial Walk of G1 by Lm54;

      end;

       A5:

      now

        assume W is Trail-like;

        then for m,n be even Element of NAT st 1 <= m & m < n & n <= ( len W) holds (W9 . m) <> (W9 . n) by Lm57;

        hence W is Trail-like Walk of G1 by Lm57;

      end;

      hence W is Trail-like implies W is Trail-like Walk of G1;

      W is Path-like implies W is Path-like Walk of G1 by A5, Def28;

      hence W is Path-like implies W is Path-like Walk of G1;

      hereby

        assume W is vertex-distinct;

        then for m,n be odd Element of NAT st m <= ( len W9) & n <= ( len W9) & (W9 . m) = (W9 . n) holds m = n;

        hence W is vertex-distinct Walk of G1 by Def29;

      end;

    end;

    theorem :: GLIB_001:176

    

     Th174: for G1 be _Graph, G2 be Subgraph of G1, W1 be Walk of G1, W2 be Walk of G2 st W1 = W2 holds (W1 is closed iff W2 is closed) & (W1 is directed iff W2 is directed) & (W1 is trivial iff W2 is trivial) & (W1 is Trail-like iff W2 is Trail-like) & (W1 is Path-like iff W2 is Path-like) & (W1 is vertex-distinct iff W2 is vertex-distinct)

    proof

      let G1 be _Graph, G2 be Subgraph of G1, W1 be Walk of G1, W2 be Walk of G2;

      assume

       A1: W1 = W2;

      then

       A2: (W1 .last() ) = (W2 .last() );

      (W1 .first() ) = (W2 .first() ) by A1;

      hence W1 is closed iff W2 is closed by A2;

      now

        hereby

          assume

           A3: W1 is directed;

          now

            let n be odd Element of NAT ;

            

             A4: 1 <= (n + 1) by NAT_1: 12;

            assume

             A5: n < ( len W2);

            then (n + 1) <= ( len W2) by NAT_1: 13;

            then (n + 1) in ( dom W2) by A4, FINSEQ_3: 25;

            then (W2 . (n + 1)) in ( the_Edges_of G2) by Th7;

            then (( the_Source_of G2) . (W2 . (n + 1))) = (( the_Source_of G1) . (W2 . (n + 1))) by GLIB_000:def 32;

            hence (( the_Source_of G2) . (W2 . (n + 1))) = (W2 . n) by A1, A3, A5;

          end;

          hence W2 is directed;

        end;

        assume W2 is directed;

        hence W1 is directed Walk of G1 by A1, Th173;

      end;

      hence W1 is directed iff W2 is directed;

      W1 is trivial iff ( len W2) = 1 by A1, Lm55;

      hence W1 is trivial iff W2 is trivial by Lm55;

      W1 is Trail-like iff for m,n be even Element of NAT st 1 <= m & m < n & n <= ( len W2) holds (W2 . m) <> (W2 . n) by A1, Lm57;

      hence

       A6: W1 is Trail-like iff W2 is Trail-like by Lm57;

      W1 is Path-like iff (W1 is Trail-like & for m,n be odd Element of NAT st m < n & n <= ( len W2) holds (W2 . m) = (W2 . n) implies m = 1 & n = ( len W2)) by A1;

      hence W1 is Path-like iff W2 is Path-like by A6;

      W1 is vertex-distinct iff for m,n be odd Element of NAT st m <= ( len W2) & n <= ( len W2) & (W2 . m) = (W2 . n) holds m = n by A1;

      hence thesis;

    end;

    theorem :: GLIB_001:177

    G1 == G2 & x is VertexSeq of G1 implies x is VertexSeq of G2

    proof

      assume that

       A1: G1 == G2 and

       A2: x is VertexSeq of G1;

      reconsider x2 = x as FinSequence of ( the_Vertices_of G2) by A1, A2, GLIB_000:def 34;

      now

        let n be Element of NAT ;

        assume that

         A3: 1 <= n and

         A4: n < ( len x2);

        consider e be set such that

         A5: e Joins ((x2 . n),(x2 . (n + 1)),G1) by A2, A3, A4, Def1;

        e Joins ((x2 . n),(x2 . (n + 1)),G2) by A1, A5, GLIB_000: 88;

        hence ex e be set st e Joins ((x2 . n),(x2 . (n + 1)),G2);

      end;

      hence thesis by Def1;

    end;

    theorem :: GLIB_001:178

    G1 == G2 & x is EdgeSeq of G1 implies x is EdgeSeq of G2

    proof

      assume that

       A1: G1 == G2 and

       A2: x is EdgeSeq of G1;

      reconsider es = x as EdgeSeq of G1 by A2;

      reconsider es2 = es as FinSequence of ( the_Edges_of G2) by A1, GLIB_000:def 34;

      consider vs be FinSequence of ( the_Vertices_of G1) such that

       A3: ( len vs) = (( len es) + 1) and

       A4: for n be Element of NAT st 1 <= n & n <= ( len es) holds (es . n) Joins ((vs . n),(vs . (n + 1)),G1) by Def2;

      now

        reconsider vs as FinSequence of ( the_Vertices_of G2) by A1, GLIB_000:def 34;

        take vs;

        thus ( len vs) = (( len es) + 1) by A3;

        let n be Element of NAT ;

        assume that

         A5: 1 <= n and

         A6: n <= ( len es2);

        (es2 . n) Joins ((vs . n),(vs . (n + 1)),G1) by A4, A5, A6;

        hence (es2 . n) Joins ((vs . n),(vs . (n + 1)),G2) by A1, GLIB_000: 88;

      end;

      hence thesis by Def2;

    end;

    theorem :: GLIB_001:179

    G1 == G2 & x is Walk of G1 implies x is Walk of G2

    proof

      assume that

       A1: G1 == G2 and

       A2: x is Walk of G1;

      

       A3: ( the_Vertices_of G1) = ( the_Vertices_of G2) by A1, GLIB_000:def 34;

      then

      reconsider W = x as FinSequence of (( the_Vertices_of G2) \/ ( the_Edges_of G2)) by A1, A2, GLIB_000:def 34;

       A4:

      now

        let n be odd Element of NAT ;

        assume n < ( len W);

        then (W . (n + 1)) Joins ((W . n),(W . (n + 2)),G1) by A2, Def3;

        hence (W . (n + 1)) Joins ((W . n),(W . (n + 2)),G2) by A1, GLIB_000: 88;

      end;

      (W . 1) in ( the_Vertices_of G2) by A2, A3, Def3;

      hence thesis by A2, A4, Def3;

    end;

    theorem :: GLIB_001:180

    G1 == G2 implies (G1 .walkOf (x,e,y)) = (G2 .walkOf (x,e,y))

    proof

      assume

       A1: G1 == G2;

      now

        per cases ;

          suppose

           A2: e Joins (x,y,G1);

          then

           A3: e Joins (x,y,G2) by A1, GLIB_000: 88;

          

          thus (G1 .walkOf (x,e,y)) = <*x, e, y*> by A2, Def5

          .= (G2 .walkOf (x,e,y)) by A3, Def5;

        end;

          suppose

           A4: not e Joins (x,y,G1);

          then

           A5: not e Joins (x,y,G2) by A1, GLIB_000: 88;

          

           A6: ( the_Vertices_of G1) = ( the_Vertices_of G2) by A1, GLIB_000:def 34;

          

          thus (G1 .walkOf (x,e,y)) = (G1 .walkOf the Element of ( the_Vertices_of G1)) by A4, Def5

          .= (G2 .walkOf the Element of ( the_Vertices_of G2)) by A6

          .= (G2 .walkOf (x,e,y)) by A5, Def5;

        end;

      end;

      hence thesis;

    end;

    theorem :: GLIB_001:181

    for W1 be Walk of G1, W2 be Walk of G2 st G1 == G2 & W1 = W2 holds (W1 is closed iff W2 is closed) & (W1 is directed iff W2 is directed) & (W1 is trivial iff W2 is trivial) & (W1 is Trail-like iff W2 is Trail-like) & (W1 is Path-like iff W2 is Path-like) & (W1 is vertex-distinct iff W2 is vertex-distinct)

    proof

      let W1 be Walk of G1, W2 be Walk of G2;

      assume that

       A1: G1 == G2 and

       A2: W1 = W2;

      G1 is Subgraph of G2 by A1, GLIB_000: 87;

      hence thesis by A2, Th174;

    end;