glib_010.miz



    begin

    theorem :: GLIB_010:1

    

     Th1: for A,B,C,D be Function st (D * A) = (C | ( dom A)) holds ((D | ( dom B)) * A) = (C | ( dom (B * A)))

    proof

      let A,B,C,D be Function;

      assume

       A1: (D * A) = (C | ( dom A));

      set f = ((D | ( dom B)) * A), g = (C | ( dom (B * A)));

      

       A2: ( dom f) = (A " ( dom (D | ( dom B)))) by RELAT_1: 147

      .= (A " (( dom D) /\ ( dom B))) by RELAT_1: 61

      .= ((A " ( dom D)) /\ (A " ( dom B))) by FUNCT_1: 68

      .= (( dom (D * A)) /\ (A " ( dom B))) by RELAT_1: 147

      .= (( dom (C | ( dom A))) /\ ( dom (B * A))) by A1, RELAT_1: 147

      .= ((( dom C) /\ ( dom A)) /\ ( dom (B * A))) by RELAT_1: 61

      .= (( dom C) /\ (( dom A) /\ ( dom (B * A)))) by XBOOLE_1: 16

      .= (( dom C) /\ ( dom (B * A))) by RELAT_1: 25, XBOOLE_1: 28

      .= ( dom g) by RELAT_1: 61;

      for x be object st x in ( dom f) holds (f . x) = (g . x)

      proof

        let x be object;

        assume

         A3: x in ( dom f);

        then

         A4: x in ( dom A) & (A . x) in ( dom (D | ( dom B))) by FUNCT_1: 11;

        

         A5: x in ( dom g) by A2, A3;

        

        thus (f . x) = ((D | ( dom B)) . (A . x)) by A3, FUNCT_1: 12

        .= (D . (A . x)) by A4, FUNCT_1: 47

        .= ((D * A) . x) by A4, FUNCT_1: 13

        .= (C . x) by A4, A1, FUNCT_1: 49

        .= (g . x) by A5, FUNCT_1: 47;

      end;

      hence thesis by A2, FUNCT_1: 2;

    end;

    theorem :: GLIB_010:2

    

     Th2: for A be one-to-one Function, C,D be Function st (D * A) = (C | ( dom A)) holds (C * (A " )) = (D | ( dom (A " )))

    proof

      let A be one-to-one Function, C,D be Function;

      assume

       A1: (D * A) = (C | ( dom A));

      

       A2: ( dom A) = ( rng (A " )) & ( rng A) = ( dom (A " )) by FUNCT_1: 33;

      for y be object holds y in ( dom (C * (A " ))) iff y in ( dom (D | ( dom (A " ))))

      proof

        let y be object;

        hereby

          assume y in ( dom (C * (A " )));

          then

           A3: y in ( dom (A " )) & ((A " ) . y) in ( dom C) by FUNCT_1: 11;

          then ((A " ) . y) in ( rng (A " )) by FUNCT_1: 3;

          then ((A " ) . y) in ( dom A) by FUNCT_1: 33;

          then ((A " ) . y) in (( dom C) /\ ( dom A)) by A3, XBOOLE_0:def 4;

          then ((A " ) . y) in ( dom (C | ( dom A))) by RELAT_1: 61;

          then (A . ((A " ) . y)) in ( dom D) by A1, FUNCT_1: 11;

          then y in ( dom D) by A2, A3, FUNCT_1: 35;

          then y in (( dom D) /\ ( dom (A " ))) by A3, XBOOLE_0:def 4;

          hence y in ( dom (D | ( dom (A " )))) by RELAT_1: 61;

        end;

        assume y in ( dom (D | ( dom (A " ))));

        then y in (( dom D) /\ ( dom (A " ))) by RELAT_1: 61;

        then

         A4: y in ( dom D) & y in ( dom (A " )) by XBOOLE_0:def 4;

        then

         A5: ((A " ) . y) in ( rng (A " )) by FUNCT_1: 3;

        (A . ((A " ) . y)) in ( dom D) by A2, A4, FUNCT_1: 35;

        then ((A " ) . y) in ( dom (D * A)) by A2, A5, FUNCT_1: 11;

        then ((A " ) . y) in (( dom C) /\ ( dom A)) by A1, RELAT_1: 61;

        then ((A " ) . y) in ( dom C) by XBOOLE_0:def 4;

        hence y in ( dom (C * (A " ))) by A4, FUNCT_1: 11;

      end;

      then

       A6: ( dom (C * (A " ))) = ( dom (D | ( dom (A " )))) by TARSKI: 2;

      for y be object st y in ( dom (C * (A " ))) holds ((C * (A " )) . y) = ((D | ( dom (A " ))) . y)

      proof

        let y be object;

        assume

         A7: y in ( dom (C * (A " )));

        then

         A8: y in ( dom (A " )) & ((A " ) . y) in ( dom C) by FUNCT_1: 11;

        then

         A9: ((A " ) . y) in ( rng (A " )) by FUNCT_1: 3;

        

        thus ((C * (A " )) . y) = (C . ((A " ) . y)) by A7, FUNCT_1: 12

        .= ((C | ( dom A)) . ((A " ) . y)) by A2, A9, FUNCT_1: 49

        .= (D . (A . ((A " ) . y))) by A1, A2, A9, FUNCT_1: 13

        .= (D . y) by A2, A8, FUNCT_1: 35

        .= ((D | ( dom (A " ))) . y) by A8, FUNCT_1: 49;

      end;

      hence thesis by A6, FUNCT_1: 2;

    end;

    registration

      let G be non _finite _Graph, X be set;

      cluster (G .set ( WeightSelector ,X)) -> non _finite;

      coherence

      proof

        G == (G .set ( WeightSelector ,X)) by GLIB_003: 7;

        hence thesis by GLIB_000: 89;

      end;

      cluster (G .set ( ELabelSelector ,X)) -> non _finite;

      coherence

      proof

        G == (G .set ( ELabelSelector ,X)) by GLIB_003: 7;

        hence thesis by GLIB_000: 89;

      end;

      cluster (G .set ( VLabelSelector ,X)) -> non _finite;

      coherence

      proof

        G == (G .set ( VLabelSelector ,X)) by GLIB_003: 7;

        hence thesis by GLIB_000: 89;

      end;

    end

    registration

      let G be non loopless _Graph, X be set;

      cluster (G .set ( WeightSelector ,X)) -> non loopless;

      coherence

      proof

        G == (G .set ( WeightSelector ,X)) by GLIB_003: 7;

        hence thesis by GLIB_000: 89;

      end;

      cluster (G .set ( ELabelSelector ,X)) -> non loopless;

      coherence

      proof

        G == (G .set ( ELabelSelector ,X)) by GLIB_003: 7;

        hence thesis by GLIB_000: 89;

      end;

      cluster (G .set ( VLabelSelector ,X)) -> non loopless;

      coherence

      proof

        G == (G .set ( VLabelSelector ,X)) by GLIB_003: 7;

        hence thesis by GLIB_000: 89;

      end;

    end

    registration

      let G be non non-multi _Graph, X be set;

      cluster (G .set ( WeightSelector ,X)) -> non non-multi;

      coherence

      proof

        G == (G .set ( WeightSelector ,X)) by GLIB_003: 7;

        hence thesis by GLIB_000: 89;

      end;

      cluster (G .set ( ELabelSelector ,X)) -> non non-multi;

      coherence

      proof

        G == (G .set ( ELabelSelector ,X)) by GLIB_003: 7;

        hence thesis by GLIB_000: 89;

      end;

      cluster (G .set ( VLabelSelector ,X)) -> non non-multi;

      coherence

      proof

        G == (G .set ( VLabelSelector ,X)) by GLIB_003: 7;

        hence thesis by GLIB_000: 89;

      end;

    end

    registration

      let G be non non-Dmulti _Graph, X be set;

      cluster (G .set ( WeightSelector ,X)) -> non non-Dmulti;

      coherence

      proof

        G == (G .set ( WeightSelector ,X)) by GLIB_003: 7;

        hence thesis by GLIB_000: 89;

      end;

      cluster (G .set ( ELabelSelector ,X)) -> non non-Dmulti;

      coherence

      proof

        G == (G .set ( ELabelSelector ,X)) by GLIB_003: 7;

        hence thesis by GLIB_000: 89;

      end;

      cluster (G .set ( VLabelSelector ,X)) -> non non-Dmulti;

      coherence

      proof

        G == (G .set ( VLabelSelector ,X)) by GLIB_003: 7;

        hence thesis by GLIB_000: 89;

      end;

    end

    registration

      let G be non connected _Graph, X be set;

      cluster (G .set ( WeightSelector ,X)) -> non connected;

      coherence

      proof

        G == (G .set ( WeightSelector ,X)) by GLIB_003: 7;

        hence thesis by GLIB_002: 8;

      end;

      cluster (G .set ( ELabelSelector ,X)) -> non connected;

      coherence

      proof

        G == (G .set ( ELabelSelector ,X)) by GLIB_003: 7;

        hence thesis by GLIB_002: 8;

      end;

      cluster (G .set ( VLabelSelector ,X)) -> non connected;

      coherence

      proof

        G == (G .set ( VLabelSelector ,X)) by GLIB_003: 7;

        hence thesis by GLIB_002: 8;

      end;

    end

    registration

      let G be non acyclic _Graph, X be set;

      cluster (G .set ( WeightSelector ,X)) -> non acyclic;

      coherence

      proof

        G == (G .set ( WeightSelector ,X)) by GLIB_003: 7;

        hence thesis by GLIB_002: 44;

      end;

      cluster (G .set ( ELabelSelector ,X)) -> non acyclic;

      coherence

      proof

        G == (G .set ( ELabelSelector ,X)) by GLIB_003: 7;

        hence thesis by GLIB_002: 44;

      end;

      cluster (G .set ( VLabelSelector ,X)) -> non acyclic;

      coherence

      proof

        G == (G .set ( VLabelSelector ,X)) by GLIB_003: 7;

        hence thesis by GLIB_002: 44;

      end;

    end

    definition

      let G be _Graph;

      :: GLIB_010:def1

      attr G is elabel-full means

      : Def1: ELabelSelector in ( dom G) & ex f be ManySortedSet of ( the_Edges_of G) st (G . ELabelSelector ) = f;

      :: GLIB_010:def2

      attr G is vlabel-full means

      : Def2: VLabelSelector in ( dom G) & ex f be ManySortedSet of ( the_Vertices_of G) st (G . VLabelSelector ) = f;

    end

    registration

      cluster elabel-full -> [ELabeled] for _Graph;

      coherence

      proof

        let G be _Graph;

        assume

         A1: G is elabel-full;

        then

        consider f be ManySortedSet of ( the_Edges_of G) such that

         A2: (G . ELabelSelector ) = f;

        ( dom f) = ( the_Edges_of G) by PARTFUN1:def 2;

        hence thesis by A1, A2, GLIB_003:def 5;

      end;

      cluster vlabel-full -> [VLabeled] for _Graph;

      coherence

      proof

        let G be _Graph;

        assume

         A3: G is vlabel-full;

        then

        consider f be ManySortedSet of ( the_Vertices_of G) such that

         A4: (G . VLabelSelector ) = f;

        ( dom f) = ( the_Vertices_of G) by PARTFUN1:def 2;

        hence thesis by A3, A4, GLIB_003:def 6;

      end;

    end

    definition

      let G be EGraph;

      :: GLIB_010:def3

      attr G is elabel-distinct means

      : Def3: ( the_ELabel_of G) is one-to-one;

    end

    definition

      let G be VGraph;

      :: GLIB_010:def4

      attr G is vlabel-distinct means

      : Def4: ( the_VLabel_of G) is one-to-one;

    end

    registration

      let G be _Graph;

      cluster (G .set ( ELabelSelector ,( id ( the_Edges_of G)))) -> elabel-full elabel-distinct;

      coherence

      proof

        set G0 = (G .set ( ELabelSelector ,( id ( the_Edges_of G))));

         ELabelSelector in { ELabelSelector } by TARSKI:def 1;

        then ELabelSelector in (( dom G) \/ { ELabelSelector }) by XBOOLE_0:def 3;

        hence ELabelSelector in ( dom G0) by GLIB_000: 7;

        thus ex f be ManySortedSet of ( the_Edges_of G0) st (G0 . ELabelSelector ) = f

        proof

          G == G0 by GLIB_003: 7;

          then ( the_Edges_of G) = ( the_Edges_of G0) by GLIB_000:def 34;

          then

          reconsider f = ( id ( the_Edges_of G)) as ManySortedSet of ( the_Edges_of G0);

          take f;

          thus (G0 . ELabelSelector ) = f by GLIB_000: 8;

        end;

        (G0 . ELabelSelector ) = ( id ( the_Edges_of G)) by GLIB_000: 8;

        hence thesis by GLIB_003:def 8;

      end;

      cluster (G .set ( VLabelSelector ,( id ( the_Vertices_of G)))) -> vlabel-full vlabel-distinct;

      coherence

      proof

        set G0 = (G .set ( VLabelSelector ,( id ( the_Vertices_of G))));

         VLabelSelector in { VLabelSelector } by TARSKI:def 1;

        then VLabelSelector in (( dom G) \/ { VLabelSelector }) by XBOOLE_0:def 3;

        hence VLabelSelector in ( dom G0) by GLIB_000: 7;

        thus ex f be ManySortedSet of ( the_Vertices_of G0) st (G0 . VLabelSelector ) = f

        proof

          G == G0 by GLIB_003: 7;

          then ( the_Vertices_of G) = ( the_Vertices_of G0) by GLIB_000:def 34;

          then

          reconsider f = ( id ( the_Vertices_of G)) as ManySortedSet of ( the_Vertices_of G0);

          take f;

          thus (G0 . VLabelSelector ) = f by GLIB_000: 8;

        end;

        (G0 . VLabelSelector ) = ( id ( the_Vertices_of G)) by GLIB_000: 8;

        hence thesis by GLIB_003:def 9;

      end;

    end

    registration

      cluster elabel-distinct elabel-full for EGraph;

      existence

      proof

        set G = the _Graph;

        take (G .set ( ELabelSelector ,( id ( the_Edges_of G))));

        thus thesis;

      end;

      cluster vlabel-distinct vlabel-full for VGraph;

      existence

      proof

        set G = the _Graph;

        take (G .set ( VLabelSelector ,( id ( the_Vertices_of G))));

        thus thesis;

      end;

    end

    definition

      let G be elabel-full _Graph;

      :: original: the_ELabel_of

      redefine

      func the_ELabel_of G -> ManySortedSet of ( the_Edges_of G) ;

      coherence

      proof

        consider f be ManySortedSet of ( the_Edges_of G) such that

         A1: (G . ELabelSelector ) = f by Def1;

        thus thesis by A1, GLIB_003:def 8;

      end;

    end

    definition

      let G be vlabel-full _Graph;

      :: original: the_VLabel_of

      redefine

      func the_VLabel_of G -> ManySortedSet of ( the_Vertices_of G) ;

      coherence

      proof

        consider f be ManySortedSet of ( the_Vertices_of G) such that

         A1: (G . VLabelSelector ) = f by Def2;

        thus thesis by A1, GLIB_003:def 9;

      end;

    end

    registration

      let G be elabel-distinct EGraph;

      cluster ( the_ELabel_of G) -> one-to-one;

      coherence by Def3;

    end

    registration

      let G be vlabel-distinct VGraph;

      cluster ( the_VLabel_of G) -> one-to-one;

      coherence by Def4;

    end

    registration

      let G be elabel-full _Graph, X be set;

      cluster (G .set ( WeightSelector ,X)) -> elabel-full;

      coherence

      proof

        set G0 = (G .set ( WeightSelector ,X));

         ELabelSelector in ( dom G) by Def1;

        then ELabelSelector in (( dom G) \/ { WeightSelector }) by XBOOLE_0:def 3;

        hence ELabelSelector in ( dom G0) by GLIB_000: 7;

        consider f be ManySortedSet of ( the_Edges_of G) such that

         A1: (G . ELabelSelector ) = f by Def1;

        G == G0 by GLIB_003: 7;

        then ( the_Edges_of G) = ( the_Edges_of G0) by GLIB_000:def 34;

        then

        reconsider f as ManySortedSet of ( the_Edges_of G0);

        take f;

         WeightSelector <> ELabelSelector by GLIB_003:def 1, GLIB_003:def 2;

        hence thesis by A1, GLIB_000: 9;

      end;

      cluster (G .set ( VLabelSelector ,X)) -> elabel-full;

      coherence

      proof

        set G0 = (G .set ( VLabelSelector ,X));

         ELabelSelector in ( dom G) by Def1;

        then ELabelSelector in (( dom G) \/ { VLabelSelector }) by XBOOLE_0:def 3;

        hence ELabelSelector in ( dom G0) by GLIB_000: 7;

        consider f be ManySortedSet of ( the_Edges_of G) such that

         A2: (G . ELabelSelector ) = f by Def1;

        G == G0 by GLIB_003: 7;

        then ( the_Edges_of G) = ( the_Edges_of G0) by GLIB_000:def 34;

        then

        reconsider f as ManySortedSet of ( the_Edges_of G0);

        take f;

         VLabelSelector <> ELabelSelector by GLIB_003:def 3, GLIB_003:def 2;

        hence thesis by A2, GLIB_000: 9;

      end;

    end

    registration

      let G be vlabel-full _Graph, X be set;

      cluster (G .set ( WeightSelector ,X)) -> vlabel-full;

      coherence

      proof

        set G0 = (G .set ( WeightSelector ,X));

         VLabelSelector in ( dom G) by Def2;

        then VLabelSelector in (( dom G) \/ { WeightSelector }) by XBOOLE_0:def 3;

        hence VLabelSelector in ( dom G0) by GLIB_000: 7;

        consider f be ManySortedSet of ( the_Vertices_of G) such that

         A1: (G . VLabelSelector ) = f by Def2;

        G == G0 by GLIB_003: 7;

        then ( the_Vertices_of G) = ( the_Vertices_of G0) by GLIB_000:def 34;

        then

        reconsider f as ManySortedSet of ( the_Vertices_of G0);

        take f;

         WeightSelector <> VLabelSelector by GLIB_003:def 1, GLIB_003:def 3;

        hence thesis by A1, GLIB_000: 9;

      end;

      cluster (G .set ( ELabelSelector ,X)) -> vlabel-full;

      coherence

      proof

        set G0 = (G .set ( ELabelSelector ,X));

         VLabelSelector in ( dom G) by Def2;

        then VLabelSelector in (( dom G) \/ { ELabelSelector }) by XBOOLE_0:def 3;

        hence VLabelSelector in ( dom G0) by GLIB_000: 7;

        consider f be ManySortedSet of ( the_Vertices_of G) such that

         A2: (G . VLabelSelector ) = f by Def2;

        G == G0 by GLIB_003: 7;

        then ( the_Vertices_of G) = ( the_Vertices_of G0) by GLIB_000:def 34;

        then

        reconsider f as ManySortedSet of ( the_Vertices_of G0);

        take f;

         ELabelSelector <> VLabelSelector by GLIB_003:def 3, GLIB_003:def 2;

        hence thesis by A2, GLIB_000: 9;

      end;

    end

    registration

      let G be elabel-distinct EGraph, X be set;

      cluster (G .set ( WeightSelector ,X)) -> elabel-distinct;

      coherence

      proof

        set G0 = (G .set ( WeightSelector ,X));

        (G . ELabelSelector ) = (G0 . ELabelSelector ) by GLIB_000: 9, GLIB_003:def 1, GLIB_003:def 2;

        then ( the_ELabel_of G) = (G0 . ELabelSelector ) by GLIB_003:def 8;

        hence thesis by GLIB_003:def 8;

      end;

      cluster (G .set ( VLabelSelector ,X)) -> elabel-distinct;

      coherence

      proof

        set G0 = (G .set ( VLabelSelector ,X));

        (G . ELabelSelector ) = (G0 . ELabelSelector ) by GLIB_000: 9, GLIB_003:def 2, GLIB_003:def 3;

        then ( the_ELabel_of G) = (G0 . ELabelSelector ) by GLIB_003:def 8;

        hence thesis by GLIB_003:def 8;

      end;

    end

    registration

      let G be vlabel-distinct VGraph, X be set;

      cluster (G .set ( WeightSelector ,X)) -> vlabel-distinct;

      coherence

      proof

        set G0 = (G .set ( WeightSelector ,X));

        (G . VLabelSelector ) = (G0 . VLabelSelector ) by GLIB_000: 9, GLIB_003:def 1, GLIB_003:def 3;

        then ( the_VLabel_of G) = (G0 . VLabelSelector ) by GLIB_003:def 9;

        hence thesis by GLIB_003:def 9;

      end;

      cluster (G .set ( ELabelSelector ,X)) -> vlabel-distinct;

      coherence

      proof

        set G0 = (G .set ( ELabelSelector ,X));

        (G . VLabelSelector ) = (G0 . VLabelSelector ) by GLIB_000: 9, GLIB_003:def 2, GLIB_003:def 3;

        then ( the_VLabel_of G) = (G0 . VLabelSelector ) by GLIB_003:def 9;

        hence thesis by GLIB_003:def 9;

      end;

    end

    registration

      cluster elabel-full elabel-distinct vlabel-full vlabel-distinct for EVGraph;

      existence

      proof

        set G = the elabel-full elabel-distinct EGraph;

        set G0 = (G .set ( VLabelSelector ,( id ( the_Vertices_of G))));

        take G0;

        thus thesis;

      end;

    end

    registration

      let G1 be WGraph, E be set, G2 be reverseEdgeDirections of G1, E;

      cluster (G2 .set ( WeightSelector ,( the_Weight_of G1))) -> [Weighted];

      coherence

      proof

        ( the_Edges_of G1) = ( the_Edges_of G2) by GLIB_007: 4;

        hence thesis;

      end;

    end

    registration

      let G1 be EGraph, E be set, G2 be reverseEdgeDirections of G1, E;

      cluster (G2 .set ( ELabelSelector ,( the_ELabel_of G1))) -> [ELabeled];

      coherence

      proof

        now

          set G3 = (G2 .set ( ELabelSelector ,( the_ELabel_of G1)));

           ELabelSelector in { ELabelSelector } by TARSKI:def 1;

          then ELabelSelector in (( dom G2) \/ { ELabelSelector }) by XBOOLE_0:def 3;

          hence ELabelSelector in ( dom G3) by GLIB_000: 7;

          consider f be Function such that

           A1: (G1 . ELabelSelector ) = f & ( dom f) c= ( the_Edges_of G1) by GLIB_003:def 5;

          G2 == G3 by GLIB_003: 7;

          then ( the_Edges_of G2) = ( the_Edges_of G3) by GLIB_000:def 34;

          then

           A2: ( the_Edges_of G1) = ( the_Edges_of G3) by GLIB_007: 4;

          take f;

          

          thus (G3 . ELabelSelector ) = ( the_ELabel_of G1) by GLIB_000: 8

          .= f by A1, GLIB_003:def 8;

          thus ( dom f) c= ( the_Edges_of G3) by A1, A2;

        end;

        hence thesis by GLIB_003:def 5;

      end;

    end

    registration

      let G1 be VGraph, V be set, G2 be reverseEdgeDirections of G1, V;

      cluster (G2 .set ( VLabelSelector ,( the_VLabel_of G1))) -> [VLabeled];

      coherence

      proof

        now

          set G3 = (G2 .set ( VLabelSelector ,( the_VLabel_of G1)));

           VLabelSelector in { VLabelSelector } by TARSKI:def 1;

          then VLabelSelector in (( dom G2) \/ { VLabelSelector }) by XBOOLE_0:def 3;

          hence VLabelSelector in ( dom G3) by GLIB_000: 7;

          consider f be Function such that

           A1: (G1 . VLabelSelector ) = f & ( dom f) c= ( the_Vertices_of G1) by GLIB_003:def 6;

          G2 == G3 by GLIB_003: 7;

          then ( the_Vertices_of G2) = ( the_Vertices_of G3) by GLIB_000:def 34;

          then

           A2: ( the_Vertices_of G1) = ( the_Vertices_of G3) by GLIB_007: 4;

          take f;

          

          thus (G3 . VLabelSelector ) = ( the_VLabel_of G1) by GLIB_000: 8

          .= f by A1, GLIB_003:def 9;

          thus ( dom f) c= ( the_Vertices_of G3) by A1, A2;

        end;

        hence thesis by GLIB_003:def 6;

      end;

    end

    registration

      let G1 be elabel-full _Graph, E be set, G2 be reverseEdgeDirections of G1, E;

      cluster (G2 .set ( ELabelSelector ,( the_ELabel_of G1))) -> elabel-full;

      coherence

      proof

        set G3 = (G2 .set ( ELabelSelector ,( the_ELabel_of G1)));

         ELabelSelector in { ELabelSelector } by TARSKI:def 1;

        then ELabelSelector in (( dom G2) \/ { ELabelSelector }) by XBOOLE_0:def 3;

        hence ELabelSelector in ( dom G3) by GLIB_000: 7;

        consider f be ManySortedSet of ( the_Edges_of G1) such that

         A1: (G1 . ELabelSelector ) = f by Def1;

        G2 == G3 by GLIB_003: 7;

        then ( the_Edges_of G2) = ( the_Edges_of G3) by GLIB_000:def 34;

        then ( the_Edges_of G1) = ( the_Edges_of G3) by GLIB_007: 4;

        then

        reconsider f as ManySortedSet of ( the_Edges_of G3);

        take f;

        

        thus (G3 . ELabelSelector ) = ( the_ELabel_of G1) by GLIB_000: 8

        .= f by A1, GLIB_003:def 8;

      end;

    end

    registration

      let G1 be vlabel-full _Graph, V be set, G2 be reverseEdgeDirections of G1, V;

      cluster (G2 .set ( VLabelSelector ,( the_VLabel_of G1))) -> vlabel-full;

      coherence

      proof

        set G3 = (G2 .set ( VLabelSelector ,( the_VLabel_of G1)));

         VLabelSelector in { VLabelSelector } by TARSKI:def 1;

        then VLabelSelector in (( dom G2) \/ { VLabelSelector }) by XBOOLE_0:def 3;

        hence VLabelSelector in ( dom G3) by GLIB_000: 7;

        consider f be ManySortedSet of ( the_Vertices_of G1) such that

         A1: (G1 . VLabelSelector ) = f by Def2;

        G2 == G3 by GLIB_003: 7;

        then ( the_Vertices_of G2) = ( the_Vertices_of G3) by GLIB_000:def 34;

        then ( the_Vertices_of G1) = ( the_Vertices_of G3) by GLIB_007: 4;

        then

        reconsider f as ManySortedSet of ( the_Vertices_of G3);

        take f;

        

        thus (G3 . VLabelSelector ) = ( the_VLabel_of G1) by GLIB_000: 8

        .= f by A1, GLIB_003:def 9;

      end;

    end

    registration

      let G1 be elabel-distinct EGraph, E be set;

      let G2 be reverseEdgeDirections of G1, E;

      cluster (G2 .set ( ELabelSelector ,( the_ELabel_of G1))) -> elabel-distinct;

      coherence

      proof

        set G3 = (G2 .set ( ELabelSelector ,( the_ELabel_of G1)));

        ( the_ELabel_of G3) = (G3 . ELabelSelector ) by GLIB_003:def 8

        .= ( the_ELabel_of G1) by GLIB_000: 8;

        hence thesis;

      end;

    end

    registration

      let G1 be vlabel-distinct VGraph, E be set;

      let G2 be reverseEdgeDirections of G1, E;

      cluster (G2 .set ( VLabelSelector ,( the_VLabel_of G1))) -> vlabel-distinct;

      coherence

      proof

        set G3 = (G2 .set ( VLabelSelector ,( the_VLabel_of G1)));

        ( the_VLabel_of G3) = (G3 . VLabelSelector ) by GLIB_003:def 9

        .= ( the_VLabel_of G1) by GLIB_000: 8;

        hence thesis;

      end;

    end

    begin

    definition

      :: GLIB_010:def5

      func OrderingSelector -> Element of NAT equals 8;

      correctness ;

    end

    definition

      let G be GraphStruct;

      :: GLIB_010:def6

      attr G is [Ordered] means

      : Def6: OrderingSelector in ( dom G) & (G . OrderingSelector ) is Enumeration of ( the_Vertices_of G);

    end

    

     Lm1: not OrderingSelector in _GraphSelectors by GLIB_000:def 5, GLIB_000: 1, ENUMSET1:def 2;

    registration

      let G be _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> [Graph-like];

      coherence by Lm1, GLIB_000: 10;

    end

    registration

      let G be _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> non plain;

      coherence

      proof

        

         A1: ( dom (G .set ( OrderingSelector ,X))) = (( dom G) \/ { OrderingSelector }) by GLIB_000: 7;

         OrderingSelector in { OrderingSelector } by TARSKI:def 1;

        then

         A2: OrderingSelector in ( dom (G .set ( OrderingSelector ,X))) by A1, XBOOLE_0:def 3;

         not OrderingSelector in _GraphSelectors by GLIB_000:def 5, GLIB_000: 1, ENUMSET1:def 2;

        hence thesis by A2, GLIB_009:def 1;

      end;

    end

    registration

      let G be WGraph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> [Weighted];

      coherence

      proof

        set G2 = (G .set ( OrderingSelector ,X));

        

         A1: (G2 . WeightSelector ) = (G . WeightSelector ) by GLIB_003:def 1, GLIB_000: 9;

         WeightSelector in ( dom G) by GLIB_003:def 4;

        then WeightSelector in (( dom G) \/ { OrderingSelector }) by XBOOLE_0:def 3;

        then

         A2: WeightSelector in ( dom G2) by GLIB_000: 7;

        ( the_Edges_of G) = ( the_Edges_of G2) by Lm1, GLIB_000: 10;

        then (G2 . WeightSelector ) is ManySortedSet of ( the_Edges_of G2) by A1, GLIB_003:def 4;

        hence thesis by A2, GLIB_003:def 4;

      end;

    end

    registration

      let G be EGraph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> [ELabeled];

      coherence

      proof

        set G2 = (G .set ( OrderingSelector ,X));

        

         A1: (G2 . ELabelSelector ) = (G . ELabelSelector ) by GLIB_003:def 2, GLIB_000: 9;

         ELabelSelector in ( dom G) by GLIB_003:def 5;

        then ELabelSelector in (( dom G) \/ { OrderingSelector }) by XBOOLE_0:def 3;

        then

         A2: ELabelSelector in ( dom G2) by GLIB_000: 7;

        ( the_Edges_of G) = ( the_Edges_of G2) by Lm1, GLIB_000: 10;

        then ex f be Function st (G2 . ELabelSelector ) = f & ( dom f) c= ( the_Edges_of G2) by A1, GLIB_003:def 5;

        hence thesis by A2, GLIB_003:def 5;

      end;

    end

    registration

      let G be VGraph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> [VLabeled];

      coherence

      proof

        set G2 = (G .set ( OrderingSelector ,X));

        

         A1: (G2 . VLabelSelector ) = (G . VLabelSelector ) by GLIB_003:def 3, GLIB_000: 9;

         VLabelSelector in ( dom G) by GLIB_003:def 6;

        then VLabelSelector in (( dom G) \/ { OrderingSelector }) by XBOOLE_0:def 3;

        then

         A2: VLabelSelector in ( dom G2) by GLIB_000: 7;

        ( the_Vertices_of G) = ( the_Vertices_of G2) by Lm1, GLIB_000: 10;

        then ex f be Function st (G2 . VLabelSelector ) = f & ( dom f) c= ( the_Vertices_of G2) by A1, GLIB_003:def 6;

        hence thesis by A2, GLIB_003:def 6;

      end;

    end

    registration

      let G be _Graph, X be Enumeration of ( the_Vertices_of G);

      cluster (G .set ( OrderingSelector ,X)) -> [Ordered];

      coherence

      proof

        set G2 = (G .set ( OrderingSelector ,X));

         OrderingSelector in { OrderingSelector } by TARSKI:def 1;

        then OrderingSelector in (( dom G) \/ { OrderingSelector }) by XBOOLE_0:def 3;

        hence OrderingSelector in ( dom G2) by GLIB_000: 7;

         not OrderingSelector in _GraphSelectors by GLIB_000: 1, GLIB_000:def 5, ENUMSET1:def 2;

        then

         A1: ( the_Vertices_of G) = ( the_Vertices_of G2) by GLIB_000: 10;

        thus (G2 . OrderingSelector ) is Enumeration of ( the_Vertices_of G2) by A1, GLIB_000: 8;

      end;

    end

    registration

      cluster [Graph-like] [Weighted] [ELabeled] [VLabeled] [Ordered] for GraphStruct;

      existence

      proof

        set G1 = the [Graph-like] [Weighted] [ELabeled] [VLabeled] GraphStruct;

        set G2 = (G1 .set ( OrderingSelector , the Enumeration of ( the_Vertices_of G1)));

        take G2;

        thus thesis;

      end;

    end

    definition

      let G be [Ordered] _Graph;

      :: GLIB_010:def7

      func the_Ordering_of G -> Enumeration of ( the_Vertices_of G) equals (G . OrderingSelector );

      correctness by Def6;

    end

    theorem :: GLIB_010:3

    

     Th3: for G be _Graph, X be set holds G == (G .set ( OrderingSelector ,X))

    proof

      let G be _Graph, X be set;

      set G2 = (G .set ( OrderingSelector ,X));

      ( the_Vertices_of G) = ( the_Vertices_of G2) & ( the_Edges_of G) = ( the_Edges_of G2) & ( the_Source_of G) = ( the_Source_of G2) & ( the_Target_of G) = ( the_Target_of G2) by Lm1, GLIB_000: 10;

      hence thesis by GLIB_000:def 34;

    end;

    registration

      let G be elabel-full _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> elabel-full;

      coherence

      proof

        set G0 = (G .set ( OrderingSelector ,X));

         ELabelSelector in ( dom G) by Def1;

        then ELabelSelector in (( dom G) \/ { OrderingSelector }) by XBOOLE_0:def 3;

        hence ELabelSelector in ( dom G0) by GLIB_000: 7;

        consider f be ManySortedSet of ( the_Edges_of G) such that

         A1: (G . ELabelSelector ) = f by Def1;

        G == G0 by Th3;

        then ( the_Edges_of G) = ( the_Edges_of G0) by GLIB_000:def 34;

        then

        reconsider f as ManySortedSet of ( the_Edges_of G0);

        take f;

         OrderingSelector <> ELabelSelector by GLIB_003:def 2;

        hence thesis by A1, GLIB_000: 9;

      end;

    end

    registration

      let G be vlabel-full _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> vlabel-full;

      coherence

      proof

        set G0 = (G .set ( OrderingSelector ,X));

         VLabelSelector in ( dom G) by Def2;

        then VLabelSelector in (( dom G) \/ { OrderingSelector }) by XBOOLE_0:def 3;

        hence VLabelSelector in ( dom G0) by GLIB_000: 7;

        consider f be ManySortedSet of ( the_Vertices_of G) such that

         A1: (G . VLabelSelector ) = f by Def2;

        G == G0 by Th3;

        then ( the_Vertices_of G) = ( the_Vertices_of G0) by GLIB_000:def 34;

        then

        reconsider f as ManySortedSet of ( the_Vertices_of G0);

        take f;

         OrderingSelector <> VLabelSelector by GLIB_003:def 3;

        hence thesis by A1, GLIB_000: 9;

      end;

    end

    registration

      let G be elabel-distinct EGraph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> elabel-distinct;

      coherence

      proof

        set G0 = (G .set ( OrderingSelector ,X));

        (G . ELabelSelector ) = (G0 . ELabelSelector ) by GLIB_000: 9, GLIB_003:def 2;

        then ( the_ELabel_of G) = (G0 . ELabelSelector ) by GLIB_003:def 8;

        hence thesis by GLIB_003:def 8;

      end;

    end

    registration

      let G be vlabel-distinct VGraph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> vlabel-distinct;

      coherence

      proof

        set G0 = (G .set ( OrderingSelector ,X));

        (G . VLabelSelector ) = (G0 . VLabelSelector ) by GLIB_000: 9, GLIB_003:def 3;

        then ( the_VLabel_of G) = (G0 . VLabelSelector ) by GLIB_003:def 9;

        hence thesis by GLIB_003:def 9;

      end;

    end

    registration

      let G be _finite _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> _finite;

      coherence

      proof

        G == (G .set ( OrderingSelector ,X)) by Th3;

        hence thesis by GLIB_000: 89;

      end;

    end

    registration

      let G be non _finite _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> non _finite;

      coherence

      proof

        G == (G .set ( OrderingSelector ,X)) by Th3;

        hence thesis by GLIB_000: 89;

      end;

    end

    registration

      let G be loopless _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> loopless;

      coherence

      proof

        G == (G .set ( OrderingSelector ,X)) by Th3;

        hence thesis by GLIB_000: 89;

      end;

    end

    registration

      let G be non loopless _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> non loopless;

      coherence

      proof

        G == (G .set ( OrderingSelector ,X)) by Th3;

        hence thesis by GLIB_000: 89;

      end;

    end

    registration

      let G be _trivial _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> _trivial;

      coherence

      proof

        G == (G .set ( OrderingSelector ,X)) by Th3;

        hence thesis by GLIB_000: 89;

      end;

    end

    registration

      let G be non _trivial _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> non _trivial;

      coherence

      proof

        G == (G .set ( OrderingSelector ,X)) by Th3;

        hence thesis by GLIB_000: 89;

      end;

    end

    registration

      let G be non-multi _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> non-multi;

      coherence

      proof

        G == (G .set ( OrderingSelector ,X)) by Th3;

        hence thesis by GLIB_000: 89;

      end;

    end

    registration

      let G be non non-multi _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> non non-multi;

      coherence

      proof

        G == (G .set ( OrderingSelector ,X)) by Th3;

        hence thesis by GLIB_000: 89;

      end;

    end

    registration

      let G be non-Dmulti _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> non-Dmulti;

      coherence

      proof

        G == (G .set ( OrderingSelector ,X)) by Th3;

        hence thesis by GLIB_000: 89;

      end;

    end

    registration

      let G be non non-Dmulti _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> non non-Dmulti;

      coherence

      proof

        G == (G .set ( OrderingSelector ,X)) by Th3;

        hence thesis by GLIB_000: 89;

      end;

    end

    registration

      let G be connected _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> connected;

      coherence by Th3, GLIB_002: 8;

    end

    registration

      let G be non connected _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> non connected;

      coherence

      proof

        G == (G .set ( OrderingSelector ,X)) by Th3;

        hence thesis by GLIB_002: 8;

      end;

    end

    registration

      let G be acyclic _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> acyclic;

      coherence by Th3, GLIB_002: 44;

    end

    registration

      let G be non acyclic _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> non acyclic;

      coherence

      proof

        G == (G .set ( OrderingSelector ,X)) by Th3;

        hence thesis by GLIB_002: 44;

      end;

    end

    registration

      let G be edgeless _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> edgeless;

      coherence by Th3, GLIB_008: 52;

    end

    registration

      let G be non edgeless _Graph, X be set;

      cluster (G .set ( OrderingSelector ,X)) -> non edgeless;

      coherence

      proof

        G == (G .set ( OrderingSelector ,X)) by Th3;

        hence thesis by GLIB_008: 52;

      end;

    end

    registration

      let G be [Ordered] _Graph, X be set;

      cluster (G .set ( WeightSelector ,X)) -> [Ordered];

      coherence

      proof

        set G1 = (G .set ( WeightSelector ,X));

         OrderingSelector in ( dom G) by Def6;

        then OrderingSelector in (( dom G) \/ { WeightSelector }) by XBOOLE_0:def 3;

        hence OrderingSelector in ( dom G1) by GLIB_000: 7;

        G == G1 by GLIB_003: 7;

        then

         A1: ( the_Vertices_of G) = ( the_Vertices_of G1) by GLIB_000:def 34;

        (G . OrderingSelector ) = (G1 . OrderingSelector ) by GLIB_003:def 1, GLIB_000: 9;

        hence thesis by A1, Def6;

      end;

      cluster (G .set ( ELabelSelector ,X)) -> [Ordered];

      coherence

      proof

        set G1 = (G .set ( ELabelSelector ,X));

         OrderingSelector in ( dom G) by Def6;

        then OrderingSelector in (( dom G) \/ { ELabelSelector }) by XBOOLE_0:def 3;

        hence OrderingSelector in ( dom G1) by GLIB_000: 7;

        G == G1 by GLIB_003: 7;

        then

         A2: ( the_Vertices_of G) = ( the_Vertices_of G1) by GLIB_000:def 34;

        (G . OrderingSelector ) = (G1 . OrderingSelector ) by GLIB_003:def 2, GLIB_000: 9;

        hence thesis by A2, Def6;

      end;

      cluster (G .set ( VLabelSelector ,X)) -> [Ordered];

      coherence

      proof

        set G1 = (G .set ( VLabelSelector ,X));

         OrderingSelector in ( dom G) by Def6;

        then OrderingSelector in (( dom G) \/ { VLabelSelector }) by XBOOLE_0:def 3;

        hence OrderingSelector in ( dom G1) by GLIB_000: 7;

        G == G1 by GLIB_003: 7;

        then

         A3: ( the_Vertices_of G) = ( the_Vertices_of G1) by GLIB_000:def 34;

        (G . OrderingSelector ) = (G1 . OrderingSelector ) by GLIB_003:def 3, GLIB_000: 9;

        hence thesis by A3, Def6;

      end;

    end

    registration

      let G1 be [Ordered] _Graph, G2 be spanning Subgraph of G1;

      cluster (G2 .set ( OrderingSelector ,( the_Ordering_of G1))) -> [Ordered];

      coherence

      proof

        ( the_Vertices_of G1) = ( the_Vertices_of G2) by GLIB_000:def 33;

        hence thesis;

      end;

    end

    registration

      let G1 be [Ordered] _Graph, E be set, G2 be reverseEdgeDirections of G1, E;

      cluster (G2 .set ( OrderingSelector ,( the_Ordering_of G1))) -> [Ordered];

      coherence

      proof

        ( the_Vertices_of G1) = ( the_Vertices_of G2) by GLIB_007: 4;

        hence thesis;

      end;

    end

    begin

    

     Lm2: for G1,G2 be _Graph holds ex f,g be Function st [ {} , {} ] = [f, g] & ( dom f) c= ( the_Vertices_of G1) & ( rng f) c= ( the_Vertices_of G2) & ( dom g) c= ( the_Edges_of G1) & ( rng g) c= ( the_Edges_of G2) & (for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f)) & (for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) iff (g . e) Joins ((f . v),(f . w),G2)) & for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),G2)

    proof

      let G1,G2 be _Graph;

      set f = the empty Function;

      take f, f;

      thus [ {} , {} ] = [f, f];

      thus ( dom f) c= ( the_Vertices_of G1) & ( rng f) c= ( the_Vertices_of G2) & ( dom f) c= ( the_Edges_of G1) & ( rng f) c= ( the_Edges_of G2) by XBOOLE_1: 2;

      thus thesis;

    end;

    definition

      let G1,G2 be _Graph;

      :: GLIB_010:def8

      mode PGraphMapping of G1,G2 means

      : Def8: ex f,g be Function st it = [f, g] & ( dom f) c= ( the_Vertices_of G1) & ( rng f) c= ( the_Vertices_of G2) & ( dom g) c= ( the_Edges_of G1) & ( rng g) c= ( the_Edges_of G2) & (for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f)) & for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),G2);

      existence

      proof

        consider f,g be Function such that

         A1: [ {} , {} ] = [f, g] and

         A2: ( dom f) c= ( the_Vertices_of G1) & ( rng f) c= ( the_Vertices_of G2) & ( dom g) c= ( the_Edges_of G1) & ( rng g) c= ( the_Edges_of G2) and

         A3: (for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f)) and (for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) iff (g . e) Joins ((f . v),(f . w),G2)) and

         A4: for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),G2) by Lm2;

        take [ {} , {} ];

        thus thesis by A1, A2, A3, A4;

      end;

    end

    

     Lm3: for G1,G2 be _Graph holds [ {} , {} ] is PGraphMapping of G1, G2

    proof

      let G1,G2 be _Graph;

      consider f,g be Function such that

       A1: [ {} , {} ] = [f, g] and

       A2: ( dom f) c= ( the_Vertices_of G1) & ( rng f) c= ( the_Vertices_of G2) & ( dom g) c= ( the_Edges_of G1) & ( rng g) c= ( the_Edges_of G2) and

       A3: (for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f)) and (for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) iff (g . e) Joins ((f . v),(f . w),G2)) and

       A4: for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),G2) by Lm2;

      thus thesis by A1, A2, A3, A4, Def8;

    end;

    registration

      let G1,G2 be _Graph;

      cluster -> pair for PGraphMapping of G1, G2;

      coherence

      proof

        let F be PGraphMapping of G1, G2;

        consider f,g be Function such that

         A1: F = [f, g] and ( dom f) c= ( the_Vertices_of G1) & ( rng f) c= ( the_Vertices_of G2) & ( dom g) c= ( the_Edges_of G1) & ( rng g) c= ( the_Edges_of G2) & (for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f)) & for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),G2) by Def8;

        thus thesis by A1;

      end;

    end

    notation

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      synonym F _V for F `1 ;

      synonym F _E for F `2 ;

    end

    registration

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      reduce [(F _V ), (F _E )] to F;

      reducibility ;

    end

    registration

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      cluster (F _V ) -> Function-like Relation-like;

      coherence

      proof

        let X be set;

        assume

         A1: X = (F _V );

        consider f,g be Function such that

         A2: F = [f, g] and ( dom f) c= ( the_Vertices_of G1) & ( rng f) c= ( the_Vertices_of G2) & ( dom g) c= ( the_Edges_of G1) & ( rng g) c= ( the_Edges_of G2) & (for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f)) & for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),G2) by Def8;

        thus thesis by A1, A2;

      end;

      cluster (F _E ) -> Function-like Relation-like;

      coherence

      proof

        let X be set;

        assume

         A3: X = (F _E );

        consider f,g be Function such that

         A4: F = [f, g] and ( dom f) c= ( the_Vertices_of G1) & ( rng f) c= ( the_Vertices_of G2) & ( dom g) c= ( the_Edges_of G1) & ( rng g) c= ( the_Edges_of G2) & (for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f)) & for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),G2) by Def8;

        thus thesis by A3, A4;

      end;

    end

    registration

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      cluster (F _V ) -> ( the_Vertices_of G1) -defined( the_Vertices_of G2) -valued;

      coherence

      proof

        let X be Function;

        assume

         A1: X = (F _V );

        consider f,g be Function such that

         A2: F = [f, g] and

         A3: ( dom f) c= ( the_Vertices_of G1) & ( rng f) c= ( the_Vertices_of G2) and ( dom g) c= ( the_Edges_of G1) & ( rng g) c= ( the_Edges_of G2) & (for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f)) & for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),G2) by Def8;

        thus thesis by A1, A2, A3, RELAT_1:def 18, RELAT_1:def 19;

      end;

      cluster (F _E ) -> ( the_Edges_of G1) -defined( the_Edges_of G2) -valued;

      coherence

      proof

        let X be Function;

        assume

         A4: X = (F _E );

        consider f,g be Function such that

         A5: F = [f, g] and ( dom f) c= ( the_Vertices_of G1) & ( rng f) c= ( the_Vertices_of G2) and

         A6: ( dom g) c= ( the_Edges_of G1) & ( rng g) c= ( the_Edges_of G2) and (for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f)) & for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),G2) by Def8;

        thus thesis by A4, A5, A6, RELAT_1:def 18, RELAT_1:def 19;

      end;

    end

    definition

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      :: original: _V

      redefine

      func F _V -> PartFunc of ( the_Vertices_of G1), ( the_Vertices_of G2) ;

      coherence

      proof

        reconsider f = (F _V ) as ( the_Vertices_of G1) -defined( the_Vertices_of G2) -valued Function by TARSKI: 1;

        ( dom f) c= ( the_Vertices_of G1) & ( rng f) c= ( the_Vertices_of G2);

        hence thesis by RELSET_1: 4;

      end;

      :: original: _E

      redefine

      func F _E -> PartFunc of ( the_Edges_of G1), ( the_Edges_of G2) ;

      coherence

      proof

        reconsider f = (F _E ) as ( the_Edges_of G1) -defined( the_Edges_of G2) -valued Function by TARSKI: 1;

        ( dom f) c= ( the_Edges_of G1) & ( rng f) c= ( the_Edges_of G2);

        hence thesis by RELSET_1: 4;

      end;

    end

    theorem :: GLIB_010:4

    

     Th4: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 holds for e,v,w be object st e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V )) holds e Joins (v,w,G1) implies ((F _E ) . e) Joins (((F _V ) . v),((F _V ) . w),G2)

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      let e,v,w be object;

      assume

       A1: e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V ));

      consider f,g be Function such that

       A2: F = [f, g] and ( dom f) c= ( the_Vertices_of G1) & ( rng f) c= ( the_Vertices_of G2) & ( dom g) c= ( the_Edges_of G1) & ( rng g) c= ( the_Edges_of G2) & (for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f)) and

       A3: for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),G2) by Def8;

      thus thesis by A1, A2, A3;

    end;

    theorem :: GLIB_010:5

    

     Th5: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 holds for e be object st e in ( dom (F _E )) holds (( the_Source_of G1) . e) in ( dom (F _V )) & (( the_Target_of G1) . e) in ( dom (F _V ))

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      let e be object;

      assume

       A1: e in ( dom (F _E ));

      consider f,g be Function such that

       A2: F = [f, g] and ( dom f) c= ( the_Vertices_of G1) & ( rng f) c= ( the_Vertices_of G2) & ( dom g) c= ( the_Edges_of G1) & ( rng g) c= ( the_Edges_of G2) and

       A3: for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f) and for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),G2) by Def8;

      thus thesis by A1, A2, A3;

    end;

    theorem :: GLIB_010:6

    

     Th6: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 holds for e be object st e in ( rng (F _E )) holds (( the_Source_of G2) . e) in ( rng (F _V )) & (( the_Target_of G2) . e) in ( rng (F _V ))

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      let e be object;

      assume e in ( rng (F _E ));

      then

      consider e0 be object such that

       A1: e0 in ( dom (F _E )) & ((F _E ) . e0) = e by FUNCT_1:def 3;

      

       A2: (( the_Source_of G1) . e0) in ( dom (F _V )) & (( the_Target_of G1) . e0) in ( dom (F _V )) by A1, Th5;

      e0 Joins ((( the_Source_of G1) . e0),(( the_Target_of G1) . e0),G1) by A1, GLIB_000:def 13;

      then ((F _E ) . e0) Joins (((F _V ) . (( the_Source_of G1) . e0)),((F _V ) . (( the_Target_of G1) . e0)),G2) by A1, A2, Th4;

      per cases by A1, GLIB_000:def 13;

        suppose (( the_Source_of G2) . e) = ((F _V ) . (( the_Source_of G1) . e0)) & (( the_Target_of G2) . e) = ((F _V ) . (( the_Target_of G1) . e0));

        hence thesis by A2, FUNCT_1:def 3;

      end;

        suppose (( the_Target_of G2) . e) = ((F _V ) . (( the_Source_of G1) . e0)) & (( the_Source_of G2) . e) = ((F _V ) . (( the_Target_of G1) . e0));

        hence thesis by A2, FUNCT_1:def 3;

      end;

    end;

    theorem :: GLIB_010:7

    

     Th7: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 holds ( dom (F _E )) c= (G1 .edgesBetween ( dom (F _V ))) & ( rng (F _E )) c= (G2 .edgesBetween ( rng (F _V )))

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      for e be object holds e in ( dom (F _E )) implies e in (G1 .edgesBetween ( dom (F _V )))

      proof

        let e be object;

        assume

         A1: e in ( dom (F _E ));

        then (( the_Source_of G1) . e) in ( dom (F _V )) & (( the_Target_of G1) . e) in ( dom (F _V )) by Th5;

        hence thesis by A1, GLIB_000: 31;

      end;

      hence ( dom (F _E )) c= (G1 .edgesBetween ( dom (F _V ))) by TARSKI:def 3;

      for e be object holds e in ( rng (F _E )) implies e in (G2 .edgesBetween ( rng (F _V )))

      proof

        let e be object;

        assume

         A2: e in ( rng (F _E ));

        then (( the_Source_of G2) . e) in ( rng (F _V )) & (( the_Target_of G2) . e) in ( rng (F _V )) by Th6;

        hence thesis by A2, GLIB_000: 31;

      end;

      hence thesis by TARSKI:def 3;

    end;

    theorem :: GLIB_010:8

    

     Th8: for G1,G2 be _Graph holds for f be PartFunc of ( the_Vertices_of G1), ( the_Vertices_of G2) holds for g be PartFunc of ( the_Edges_of G1), ( the_Edges_of G2) st ((for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f)) & for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),G2)) holds [f, g] is PGraphMapping of G1, G2

    proof

      let G1,G2 be _Graph;

      let f be PartFunc of ( the_Vertices_of G1), ( the_Vertices_of G2);

      let g be PartFunc of ( the_Edges_of G1), ( the_Edges_of G2);

      assume that

       A1: for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f) and

       A2: for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),G2);

      

       A3: ( dom f) c= ( the_Vertices_of G1) & ( rng f) c= ( the_Vertices_of G2);

      

       A4: ( dom g) c= ( the_Edges_of G1) & ( rng g) c= ( the_Edges_of G2);

      take f, g;

      thus thesis by A1, A2, A3, A4;

    end;

    theorem :: GLIB_010:9

    

     Th9: for G1,G2,G3,G4 be _Graph, F be PGraphMapping of G1, G2 st G1 == G3 & G2 == G4 holds F is PGraphMapping of G3, G4

    proof

      let G1,G2,G3,G4 be _Graph, F be PGraphMapping of G1, G2;

      assume

       A1: G1 == G3 & G2 == G4;

      then

       A2: ( the_Vertices_of G1) = ( the_Vertices_of G3) & ( the_Edges_of G1) = ( the_Edges_of G3) & ( the_Vertices_of G2) = ( the_Vertices_of G4) & ( the_Edges_of G2) = ( the_Edges_of G4) by GLIB_000:def 34;

      then

      reconsider f = (F _V ) as PartFunc of ( the_Vertices_of G3), ( the_Vertices_of G4);

      reconsider g = (F _E ) as PartFunc of ( the_Edges_of G3), ( the_Edges_of G4) by A2;

      now

        hereby

          let e be object;

          assume e in ( dom g);

          then (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f) by Th5;

          hence (( the_Source_of G3) . e) in ( dom f) & (( the_Target_of G3) . e) in ( dom f) by A1, GLIB_000:def 34;

        end;

        let e,v,w be object;

        assume e in ( dom g) & v in ( dom f) & w in ( dom f);

        then e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),G2) by Th4;

        hence e Joins (v,w,G3) implies (g . e) Joins ((f . v),(f . w),G4) by A1, GLIB_000: 88;

      end;

      then [f, g] is PGraphMapping of G3, G4 by Th8;

      hence thesis;

    end;

    theorem :: GLIB_010:10

    

     Th10: for G1,G2,G3,G4 be _Graph, F be PGraphMapping of G1, G2 st (ex E1,E2 be set st G3 is reverseEdgeDirections of G1, E1 & G4 is reverseEdgeDirections of G2, E2) holds F is PGraphMapping of G3, G4

    proof

      let G1,G2,G3,G4 be _Graph, F be PGraphMapping of G1, G2;

      given E1,E2 be set such that

       A1: G3 is reverseEdgeDirections of G1, E1 & G4 is reverseEdgeDirections of G2, E2;

      

       A2: ( the_Vertices_of G1) = ( the_Vertices_of G3) & ( the_Edges_of G1) = ( the_Edges_of G3) & ( the_Vertices_of G2) = ( the_Vertices_of G4) & ( the_Edges_of G2) = ( the_Edges_of G4) by A1, GLIB_007: 4;

      then

      reconsider f = (F _V ) as PartFunc of ( the_Vertices_of G3), ( the_Vertices_of G4);

      reconsider g = (F _E ) as PartFunc of ( the_Edges_of G3), ( the_Edges_of G4) by A2;

      now

        hereby

          let e be object;

          assume

           A3: e in ( dom g);

          then

           A4: (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f) by Th5;

          e in ( the_Edges_of G1) by A2, A3;

          then

           A5: e DJoins ((( the_Source_of G1) . e),(( the_Target_of G1) . e),G1) by GLIB_000:def 14;

          per cases ;

            suppose

             A6: E1 c= ( the_Edges_of G1);

            per cases ;

              suppose e in E1;

              then e DJoins ((( the_Target_of G1) . e),(( the_Source_of G1) . e),G3) by A1, A5, A6, GLIB_007: 7;

              hence (( the_Source_of G3) . e) in ( dom f) & (( the_Target_of G3) . e) in ( dom f) by A4, GLIB_000:def 14;

            end;

              suppose not e in E1;

              then e DJoins ((( the_Source_of G1) . e),(( the_Target_of G1) . e),G3) by A1, A5, A6, GLIB_007: 8;

              hence (( the_Source_of G3) . e) in ( dom f) & (( the_Target_of G3) . e) in ( dom f) by A4, GLIB_000:def 14;

            end;

          end;

            suppose not E1 c= ( the_Edges_of G1);

            then G1 == G3 by A1, GLIB_007:def 1;

            hence (( the_Source_of G3) . e) in ( dom f) & (( the_Target_of G3) . e) in ( dom f) by A4, GLIB_000:def 34;

          end;

        end;

        let e,v,w be object;

        assume e in ( dom g) & v in ( dom f) & w in ( dom f);

        then e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),G2) by Th4;

        hence e Joins (v,w,G3) implies (g . e) Joins ((f . v),(f . w),G4) by A1, GLIB_007: 9;

      end;

      then [f, g] is PGraphMapping of G3, G4 by Th8;

      hence thesis;

    end;

    definition

      let G be _Graph;

      :: GLIB_010:def9

      func id G -> PGraphMapping of G, G equals [( id ( the_Vertices_of G)), ( id ( the_Edges_of G))];

      coherence

      proof

        set IT = [( id ( the_Vertices_of G)), ( id ( the_Edges_of G))];

        

         A1: for e be object st e in ( dom ( id ( the_Edges_of G))) holds (( the_Source_of G) . e) in ( dom ( id ( the_Vertices_of G))) & (( the_Target_of G) . e) in ( dom ( id ( the_Vertices_of G))) by FUNCT_2: 5;

        now

          let e,v,w be object;

          assume

           A2: e in ( dom ( id ( the_Edges_of G))) & v in ( dom ( id ( the_Vertices_of G))) & w in ( dom ( id ( the_Vertices_of G)));

          assume e Joins (v,w,G);

          then (( id ( the_Edges_of G)) . e) Joins (v,w,G) by A2, FUNCT_1: 18;

          then (( id ( the_Edges_of G)) . e) Joins ((( id ( the_Vertices_of G)) . v),w,G) by A2, FUNCT_1: 18;

          hence (( id ( the_Edges_of G)) . e) Joins ((( id ( the_Vertices_of G)) . v),(( id ( the_Vertices_of G)) . w),G) by A2, FUNCT_1: 18;

        end;

        hence thesis by A1, Th8;

      end;

    end

    theorem :: GLIB_010:11

    for G1,G2 be _Graph st G1 == G2 holds ( id G1) = ( id G2) & ( id G1) is PGraphMapping of G1, G2

    proof

      let G1,G2 be _Graph;

      assume

       A1: G1 == G2;

      

      thus ( id G1) = [( id ( the_Vertices_of G2)), ( id ( the_Edges_of G1))] by A1, GLIB_000:def 34

      .= ( id G2) by A1, GLIB_000:def 34;

      thus thesis by A1, Th9;

    end;

    theorem :: GLIB_010:12

    for G1 be _Graph, E be set, G2 be reverseEdgeDirections of G1, E holds ( id G1) = ( id G2) & ( id G1) is PGraphMapping of G1, G2

    proof

      let G1 be _Graph, E be set;

      let G2 be reverseEdgeDirections of G1, E;

      

      thus ( id G1) = [( id ( the_Vertices_of G2)), ( id ( the_Edges_of G1))] by GLIB_007: 4

      .= ( id G2) by GLIB_007: 4;

      ex E1,E2 be set st G1 is reverseEdgeDirections of G1, E1 & G2 is reverseEdgeDirections of G1, E2

      proof

        take {} , E;

        thus thesis by GLIB_009: 43;

      end;

      hence thesis by Th10;

    end;

    definition

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      :: GLIB_010:def10

      attr F is empty means

      : Def10: ( dom (F _V )) is empty;

      :: GLIB_010:def11

      attr F is total means

      : Def11: ( dom (F _V )) = ( the_Vertices_of G1) & ( dom (F _E )) = ( the_Edges_of G1);

      :: GLIB_010:def12

      attr F is onto means

      : Def12: ( rng (F _V )) = ( the_Vertices_of G2) & ( rng (F _E )) = ( the_Edges_of G2);

      :: GLIB_010:def13

      attr F is one-to-one means

      : Def13: (F _V ) is one-to-one & (F _E ) is one-to-one;

      :: GLIB_010:def14

      attr F is directed means

      : Def14: for e,v,w be object st e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V )) holds e DJoins (v,w,G1) implies ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2);

      :: GLIB_010:def15

      attr F is semi-continuous means

      : Def15: for e,v,w be object st e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V )) holds ((F _E ) . e) Joins (((F _V ) . v),((F _V ) . w),G2) implies e Joins (v,w,G1);

      :: GLIB_010:def16

      attr F is continuous means

      : Def16: for e9,v,w be object st v in ( dom (F _V )) & w in ( dom (F _V )) & e9 Joins (((F _V ) . v),((F _V ) . w),G2) holds ex e be object st e Joins (v,w,G1) & e in ( dom (F _E )) & ((F _E ) . e) = e9;

      :: GLIB_010:def17

      attr F is semi-Dcontinuous means

      : Def17: for e,v,w be object st e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V )) holds ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2) implies e DJoins (v,w,G1);

      :: GLIB_010:def18

      attr F is Dcontinuous means

      : Def18: for e9,v,w be object st v in ( dom (F _V )) & w in ( dom (F _V )) & e9 DJoins (((F _V ) . v),((F _V ) . w),G2) holds ex e be object st e DJoins (v,w,G1) & e in ( dom (F _E )) & ((F _E ) . e) = e9;

    end

    theorem :: GLIB_010:13

    

     Th13: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 holds F is directed iff for e be object st e in ( dom (F _E )) holds (( the_Source_of G2) . ((F _E ) . e)) = ((F _V ) . (( the_Source_of G1) . e)) & (( the_Target_of G2) . ((F _E ) . e)) = ((F _V ) . (( the_Target_of G1) . e))

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      thus F is directed implies for e be object st e in ( dom (F _E )) holds (( the_Source_of G2) . ((F _E ) . e)) = ((F _V ) . (( the_Source_of G1) . e)) & (( the_Target_of G2) . ((F _E ) . e)) = ((F _V ) . (( the_Target_of G1) . e))

      proof

        assume

         A1: F is directed;

        let e be object;

        assume

         A2: e in ( dom (F _E ));

        then

         A3: (( the_Source_of G1) . e) in ( dom (F _V )) & (( the_Target_of G1) . e) in ( dom (F _V )) by Th5;

        e DJoins ((( the_Source_of G1) . e),(( the_Target_of G1) . e),G1) by A2, GLIB_000:def 14;

        then ((F _E ) . e) DJoins (((F _V ) . (( the_Source_of G1) . e)),((F _V ) . (( the_Target_of G1) . e)),G2) by A1, A2, A3;

        hence thesis by GLIB_000:def 14;

      end;

      assume

       A4: for e be object st e in ( dom (F _E )) holds (( the_Source_of G2) . ((F _E ) . e)) = ((F _V ) . (( the_Source_of G1) . e)) & (( the_Target_of G2) . ((F _E ) . e)) = ((F _V ) . (( the_Target_of G1) . e));

      let e,v,w be object;

      assume

       A5: e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V ));

      assume e DJoins (v,w,G1);

      then

       A6: (( the_Source_of G1) . e) = v & (( the_Target_of G1) . e) = w by GLIB_000:def 14;

      (( the_Source_of G2) . ((F _E ) . e)) = ((F _V ) . v) & (( the_Target_of G2) . ((F _E ) . e)) = ((F _V ) . w) by A4, A5, A6;

      hence thesis by A5, PARTFUN1: 4, GLIB_000:def 14;

    end;

    theorem :: GLIB_010:14

    for G1,G2 be _Graph, F be PGraphMapping of G1, G2 holds F is directed iff (( the_Source_of G2) * (F _E )) = ((F _V ) * (( the_Source_of G1) | ( dom (F _E )))) & (( the_Target_of G2) * (F _E )) = ((F _V ) * (( the_Target_of G1) | ( dom (F _E ))))

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      hereby

        assume F is directed;

        then

         A1: for e be object st e in ( dom (F _E )) holds (( the_Source_of G2) . ((F _E ) . e)) = ((F _V ) . (( the_Source_of G1) . e)) & (( the_Target_of G2) . ((F _E ) . e)) = ((F _V ) . (( the_Target_of G1) . e)) by Th13;

        for x be object holds x in ( dom (( the_Source_of G2) * (F _E ))) iff x in ( dom ((F _V ) * (( the_Source_of G1) | ( dom (F _E )))))

        proof

          let x be object;

          hereby

            assume x in ( dom (( the_Source_of G2) * (F _E )));

            then

             A2: x in ( dom (F _E )) by FUNCT_1: 11;

            then x in ( the_Edges_of G1);

            then x in ( dom ( the_Source_of G1)) by FUNCT_2:def 1;

            then

             A3: x in ( dom (( the_Source_of G1) | ( dom (F _E )))) by A2, RELAT_1: 57;

            (( the_Source_of G1) . x) in ( dom (F _V )) by A2, Th5;

            then ((( the_Source_of G1) | ( dom (F _E ))) . x) in ( dom (F _V )) by A2, FUNCT_1: 49;

            hence x in ( dom ((F _V ) * (( the_Source_of G1) | ( dom (F _E ))))) by A3, FUNCT_1: 11;

          end;

          assume x in ( dom ((F _V ) * (( the_Source_of G1) | ( dom (F _E )))));

          then x in ( dom (( the_Source_of G1) | ( dom (F _E )))) by FUNCT_1: 11;

          then

           A4: x in ( dom ( the_Source_of G1)) & x in ( dom (F _E )) by RELAT_1: 57;

          then ((F _E ) . x) in ( the_Edges_of G2) by PARTFUN1: 4;

          then ((F _E ) . x) in ( dom ( the_Source_of G2)) by FUNCT_2:def 1;

          hence thesis by A4, FUNCT_1: 11;

        end;

        then

         A5: ( dom (( the_Source_of G2) * (F _E ))) = ( dom ((F _V ) * (( the_Source_of G1) | ( dom (F _E ))))) by TARSKI: 2;

        for x be object st x in ( dom (( the_Source_of G2) * (F _E ))) holds ((( the_Source_of G2) * (F _E )) . x) = (((F _V ) * (( the_Source_of G1) | ( dom (F _E )))) . x)

        proof

          let x be object;

          assume

           A6: x in ( dom (( the_Source_of G2) * (F _E )));

          then

           A7: x in ( dom (F _E )) by FUNCT_1: 11;

          

           A8: x in ( dom (( the_Source_of G1) | ( dom (F _E )))) by A5, A6, FUNCT_1: 11;

          

          thus ((( the_Source_of G2) * (F _E )) . x) = (( the_Source_of G2) . ((F _E ) . x)) by A6, FUNCT_1: 12

          .= ((F _V ) . (( the_Source_of G1) . x)) by A1, A7

          .= ((F _V ) . ((( the_Source_of G1) | ( dom (F _E ))) . x)) by A8, FUNCT_1: 47

          .= (((F _V ) * (( the_Source_of G1) | ( dom (F _E )))) . x) by A8, FUNCT_1: 13;

        end;

        hence (( the_Source_of G2) * (F _E )) = ((F _V ) * (( the_Source_of G1) | ( dom (F _E )))) by A5, FUNCT_1: 2;

        for x be object holds x in ( dom (( the_Target_of G2) * (F _E ))) iff x in ( dom ((F _V ) * (( the_Target_of G1) | ( dom (F _E )))))

        proof

          let x be object;

          hereby

            assume x in ( dom (( the_Target_of G2) * (F _E )));

            then

             A9: x in ( dom (F _E )) by FUNCT_1: 11;

            then x in ( the_Edges_of G1);

            then x in ( dom ( the_Target_of G1)) by FUNCT_2:def 1;

            then

             A10: x in ( dom (( the_Target_of G1) | ( dom (F _E )))) by A9, RELAT_1: 57;

            (( the_Target_of G1) . x) in ( dom (F _V )) by A9, Th5;

            then ((( the_Target_of G1) | ( dom (F _E ))) . x) in ( dom (F _V )) by A9, FUNCT_1: 49;

            hence x in ( dom ((F _V ) * (( the_Target_of G1) | ( dom (F _E ))))) by A10, FUNCT_1: 11;

          end;

          assume x in ( dom ((F _V ) * (( the_Target_of G1) | ( dom (F _E )))));

          then x in ( dom (( the_Target_of G1) | ( dom (F _E )))) by FUNCT_1: 11;

          then

           A11: x in ( dom ( the_Target_of G1)) & x in ( dom (F _E )) by RELAT_1: 57;

          then ((F _E ) . x) in ( the_Edges_of G2) by PARTFUN1: 4;

          then ((F _E ) . x) in ( dom ( the_Target_of G2)) by FUNCT_2:def 1;

          hence thesis by A11, FUNCT_1: 11;

        end;

        then

         A12: ( dom (( the_Target_of G2) * (F _E ))) = ( dom ((F _V ) * (( the_Target_of G1) | ( dom (F _E ))))) by TARSKI: 2;

        for x be object st x in ( dom (( the_Target_of G2) * (F _E ))) holds ((( the_Target_of G2) * (F _E )) . x) = (((F _V ) * (( the_Target_of G1) | ( dom (F _E )))) . x)

        proof

          let x be object;

          assume

           A13: x in ( dom (( the_Target_of G2) * (F _E )));

          then

           A14: x in ( dom (F _E )) by FUNCT_1: 11;

          x in ( dom ((F _V ) * (( the_Target_of G1) | ( dom (F _E ))))) by A12, A13;

          then

           A15: x in ( dom (( the_Target_of G1) | ( dom (F _E )))) by FUNCT_1: 11;

          

          thus ((( the_Target_of G2) * (F _E )) . x) = (( the_Target_of G2) . ((F _E ) . x)) by A13, FUNCT_1: 12

          .= ((F _V ) . (( the_Target_of G1) . x)) by A1, A14

          .= ((F _V ) . ((( the_Target_of G1) | ( dom (F _E ))) . x)) by A15, FUNCT_1: 47

          .= (((F _V ) * (( the_Target_of G1) | ( dom (F _E )))) . x) by A15, FUNCT_1: 13;

        end;

        hence (( the_Target_of G2) * (F _E )) = ((F _V ) * (( the_Target_of G1) | ( dom (F _E )))) by A12, FUNCT_1: 2;

      end;

      assume

       A16: (( the_Source_of G2) * (F _E )) = ((F _V ) * (( the_Source_of G1) | ( dom (F _E )))) & (( the_Target_of G2) * (F _E )) = ((F _V ) * (( the_Target_of G1) | ( dom (F _E ))));

      now

        let x be object;

        assume

         A17: x in ( dom (F _E ));

        then x in ( the_Edges_of G1);

        then x in ( dom ( the_Source_of G1)) & x in ( dom ( the_Target_of G1)) by FUNCT_2:def 1;

        then

         A18: x in ( dom (( the_Source_of G1) | ( dom (F _E )))) & x in ( dom (( the_Target_of G1) | ( dom (F _E )))) by A17, RELAT_1: 57;

        

        thus (( the_Source_of G2) . ((F _E ) . x)) = ((( the_Source_of G2) * (F _E )) . x) by A17, FUNCT_1: 13

        .= ((F _V ) . ((( the_Source_of G1) | ( dom (F _E ))) . x)) by A16, A18, FUNCT_1: 13

        .= ((F _V ) . (( the_Source_of G1) . x)) by A17, FUNCT_1: 49;

        

        thus (( the_Target_of G2) . ((F _E ) . x)) = ((( the_Target_of G2) * (F _E )) . x) by A17, FUNCT_1: 13

        .= ((F _V ) . ((( the_Target_of G1) | ( dom (F _E ))) . x)) by A16, A18, FUNCT_1: 13

        .= ((F _V ) . (( the_Target_of G1) . x)) by A17, FUNCT_1: 49;

      end;

      hence thesis by Th13;

    end;

    theorem :: GLIB_010:15

    

     Th15: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 holds F is semi-continuous iff for e,v,w be object st e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V )) holds e Joins (v,w,G1) iff ((F _E ) . e) Joins (((F _V ) . v),((F _V ) . w),G2) by Th4;

    theorem :: GLIB_010:16

    

     Th16: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 holds F is semi-Dcontinuous iff for e,v,w be object st e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V )) holds e DJoins (v,w,G1) iff ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2)

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      thus F is semi-Dcontinuous implies for e,v,w be object st e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V )) holds e DJoins (v,w,G1) iff ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2)

      proof

        assume

         A1: F is semi-Dcontinuous;

        let e,v,w be object;

        assume

         A2: e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V ));

        thus e DJoins (v,w,G1) implies ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2)

        proof

          assume

           A3: e DJoins (v,w,G1);

          then e Joins (v,w,G1) by GLIB_000: 16;

          then

           A4: ((F _E ) . e) Joins (((F _V ) . v),((F _V ) . w),G2) by A2, Th4;

          assume

           A5: not ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2);

          then

           A6: ((F _E ) . e) DJoins (((F _V ) . w),((F _V ) . v),G2) by A4, GLIB_000: 16;

          then e DJoins (w,v,G1) by A1, A2;

          then (( the_Source_of G1) . e) = w & (( the_Target_of G1) . e) = v by GLIB_000:def 14;

          then v = w by A3, GLIB_000:def 14;

          hence contradiction by A5, A6;

        end;

        thus thesis by A1, A2;

      end;

      thus thesis;

    end;

    registration

      let G1,G2 be _Graph;

      cluster empty one-to-one Dcontinuous directed continuous semi-Dcontinuous semi-continuous for PGraphMapping of G1, G2;

      existence

      proof

        reconsider F = [ {} , {} ] as PGraphMapping of G1, G2 by Lm3;

        take F;

        thus thesis;

      end;

      cluster non empty one-to-one directed semi-Dcontinuous semi-continuous for PGraphMapping of G1, G2;

      existence

      proof

        set v1 = the Vertex of G1, v2 = the Vertex of G2;

        set h = (v1 .--> v2);

        

         A1: h = ( {v1} --> v2) by FUNCOP_1:def 9;

        set F = [h, {} ];

        now

          reconsider f = h as Function;

          reconsider g = {} as Function;

          take f, g;

          thus F = [f, g];

          ( dom f) = {v1} by A1;

          hence ( dom f) c= ( the_Vertices_of G1);

          

           A2: ( rng f) c= {v2} by A1, FUNCOP_1: 13;

          thus ( rng f) c= ( the_Vertices_of G2) by A2, XBOOLE_1: 1;

          ( dom g) = {} & ( rng g) = {} ;

          hence ( dom g) c= ( the_Edges_of G1) & ( rng g) c= ( the_Edges_of G2) by XBOOLE_1: 2;

          thus for e be object st e in ( dom g) holds (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f);

          let e,v,w be object;

          assume e in ( dom g) & v in ( dom f) & w in ( dom f);

          hence e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),G2);

        end;

        then

        reconsider F as PGraphMapping of G1, G2 by Def8;

        take F;

        thus F is non empty;

        thus thesis;

      end;

    end

    registration

      let G1,G2 be _Graph, F be empty PGraphMapping of G1, G2;

      cluster (F _V ) -> empty;

      coherence

      proof

        let X be set;

        assume

         A1: X = (F _V );

        ( dom (F _V )) is empty by Def10;

        hence thesis by A1;

      end;

      cluster (F _E ) -> empty;

      coherence

      proof

        let X be set;

        assume

         A2: X = (F _E );

        (F _E ) is empty

        proof

          assume

           A3: (F _E ) is non empty;

          set e = the Element of ( dom (F _E ));

          (( the_Source_of G1) . e) in ( dom (F _V )) by A3, Th5;

          hence contradiction;

        end;

        hence thesis by A2;

      end;

    end

    registration

      let G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2;

      cluster (F _V ) -> non empty;

      coherence

      proof

        let X be set;

        assume

         A1: X = (F _V );

        ( dom (F _V )) is non empty by Def10;

        hence thesis by A1;

      end;

    end

    registration

      let G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2;

      cluster (F _V ) -> one-to-one;

      coherence by Def13;

      cluster (F _E ) -> one-to-one;

      coherence by Def13;

    end

    theorem :: GLIB_010:17

    

     Th17: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 st (F _V ) is one-to-one holds F is semi-continuous

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      assume

       A1: (F _V ) is one-to-one;

      let e,v,w be object;

      assume that

       A2: e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V )) and

       A3: ((F _E ) . e) Joins (((F _V ) . v),((F _V ) . w),G2);

      set v1 = (( the_Source_of G1) . e), v2 = (( the_Target_of G1) . e);

      

       A4: e Joins (v1,v2,G1) by A2, GLIB_000:def 13;

      

       A5: v1 in ( dom (F _V )) & v2 in ( dom (F _V )) by A2, Th5;

      then ((F _E ) . e) Joins (((F _V ) . v1),((F _V ) . v2),G2) by A2, A4, Th4;

      per cases by A3, GLIB_000: 15;

        suppose ((F _V ) . v1) = ((F _V ) . v) & ((F _V ) . v2) = ((F _V ) . w);

        then v1 = v & v2 = w by A1, A2, A5, FUNCT_1:def 4;

        hence e Joins (v,w,G1) by A4;

      end;

        suppose ((F _V ) . v1) = ((F _V ) . w) & ((F _V ) . v2) = ((F _V ) . v);

        then v1 = w & v2 = v by A1, A2, A5, FUNCT_1:def 4;

        hence e Joins (v,w,G1) by A4, GLIB_000: 14;

      end;

    end;

    theorem :: GLIB_010:18

    

     Th18: for G1,G2 be _Graph, F be directed PGraphMapping of G1, G2 st (F _V ) is one-to-one holds F is semi-Dcontinuous

    proof

      let G1,G2 be _Graph, F be directed PGraphMapping of G1, G2;

      assume

       A1: (F _V ) is one-to-one;

      let e,v,w be object;

      assume that

       A2: e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V )) and

       A3: ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2);

      set v1 = (( the_Source_of G1) . e), v2 = (( the_Target_of G1) . e);

      

       A4: e DJoins (v1,v2,G1) by A2, GLIB_000:def 14;

      

       A5: v1 in ( dom (F _V )) & v2 in ( dom (F _V )) by A2, Th5;

      then ((F _E ) . e) DJoins (((F _V ) . v1),((F _V ) . v2),G2) by A2, A4, Def14;

      then ((F _V ) . v1) = ((F _V ) . v) & ((F _V ) . v2) = ((F _V ) . w) by A3, GLIB_009: 6;

      then v1 = v & v2 = w by A1, A2, A5, FUNCT_1:def 4;

      hence e DJoins (v,w,G1) by A4;

    end;

    theorem :: GLIB_010:19

    

     Th19: for G1,G2 be _Graph, F be semi-continuous PGraphMapping of G1, G2 st ( rng (F _E )) = ( the_Edges_of G2) holds F is continuous

    proof

      let G1,G2 be _Graph;

      let F be semi-continuous PGraphMapping of G1, G2;

      assume

       A1: ( rng (F _E )) = ( the_Edges_of G2);

      let e9,v,w be object;

      assume

       A2: v in ( dom (F _V )) & w in ( dom (F _V )) & e9 Joins (((F _V ) . v),((F _V ) . w),G2);

      then e9 in ( the_Edges_of G2) by GLIB_000:def 13;

      then

      consider e be object such that

       A3: e in ( dom (F _E )) & ((F _E ) . e) = e9 by A1, FUNCT_1:def 3;

      take e;

      thus thesis by A2, A3, Def15;

    end;

    theorem :: GLIB_010:20

    

     Th20: for G1,G2 be _Graph, F be semi-Dcontinuous PGraphMapping of G1, G2 st ( rng (F _E )) = ( the_Edges_of G2) holds F is Dcontinuous

    proof

      let G1,G2 be _Graph;

      let F be semi-Dcontinuous PGraphMapping of G1, G2;

      assume

       A1: ( rng (F _E )) = ( the_Edges_of G2);

      let e9,v,w be object;

      assume

       A2: v in ( dom (F _V )) & w in ( dom (F _V )) & e9 DJoins (((F _V ) . v),((F _V ) . w),G2);

      then e9 in ( the_Edges_of G2) by GLIB_000:def 14;

      then

      consider e be object such that

       A3: e in ( dom (F _E )) & ((F _E ) . e) = e9 by A1, FUNCT_1:def 3;

      take e;

      thus thesis by A2, A3, Def17;

    end;

    theorem :: GLIB_010:21

    

     Th21: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 st (F _V ) is one-to-one & ( rng (F _E )) = ( the_Edges_of G2) holds F is continuous

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      assume

       A1: (F _V ) is one-to-one & ( rng (F _E )) = ( the_Edges_of G2);

      then F is semi-continuous by Th17;

      hence thesis by A1, Th19;

    end;

    theorem :: GLIB_010:22

    

     Th22: for G1,G2 be _Graph, F be directed PGraphMapping of G1, G2 st (F _V ) is one-to-one & ( rng (F _E )) = ( the_Edges_of G2) holds F is Dcontinuous

    proof

      let G1,G2 be _Graph, F be directed PGraphMapping of G1, G2;

      assume

       A1: (F _V ) is one-to-one & ( rng (F _E )) = ( the_Edges_of G2);

      then F is semi-Dcontinuous by Th18;

      hence thesis by A1, Th20;

    end;

    theorem :: GLIB_010:23

    for G1,G2 be _Graph, F be continuous PGraphMapping of G1, G2 st (F _E ) is one-to-one holds F is semi-continuous

    proof

      let G1,G2 be _Graph;

      let F be continuous PGraphMapping of G1, G2;

      assume

       A1: (F _E ) is one-to-one;

      let e,v,w be object;

      assume that

       A2: e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V )) and

       A3: ((F _E ) . e) Joins (((F _V ) . v),((F _V ) . w),G2);

      consider e0 be object such that

       A4: e0 Joins (v,w,G1) & e0 in ( dom (F _E )) & ((F _E ) . e0) = ((F _E ) . e) by A2, A3, Def16;

      thus e Joins (v,w,G1) by A1, A2, A4, FUNCT_1:def 4;

    end;

    theorem :: GLIB_010:24

    

     Th24: for G1,G2 be _Graph, F be Dcontinuous PGraphMapping of G1, G2 st (F _E ) is one-to-one holds F is semi-Dcontinuous

    proof

      let G1,G2 be _Graph;

      let F be Dcontinuous PGraphMapping of G1, G2;

      assume

       A1: (F _E ) is one-to-one;

      let e,v,w be object;

      assume that

       A2: e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V )) and

       A3: ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2);

      consider e0 be object such that

       A4: e0 DJoins (v,w,G1) & e0 in ( dom (F _E )) & ((F _E ) . e0) = ((F _E ) . e) by A2, A3, Def18;

      thus e DJoins (v,w,G1) by A1, A2, A4, FUNCT_1:def 4;

    end;

    theorem :: GLIB_010:25

    

     Th25: for G1,G2 be _Graph, F be Dcontinuous PGraphMapping of G1, G2 st (F _E ) is one-to-one holds F is directed

    proof

      let G1,G2 be _Graph;

      let F be Dcontinuous PGraphMapping of G1, G2;

      assume

       A1: (F _E ) is one-to-one;

      now

        let e,v,w be object;

        assume

         A2: e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V ));

        assume

         A3: e DJoins (v,w,G1);

        then e Joins (v,w,G1) by GLIB_000: 16;

        per cases by A2, Th4, GLIB_000: 16;

          suppose ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2);

          hence ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2);

        end;

          suppose

           A4: ((F _E ) . e) DJoins (((F _V ) . w),((F _V ) . v),G2);

          then

          consider e0 be object such that

           A5: e0 DJoins (w,v,G1) & e0 in ( dom (F _E )) & ((F _E ) . e0) = ((F _E ) . e) by A2, Def18;

          e0 = e by A1, A2, A5, FUNCT_1:def 4;

          then v = w by A3, A5, GLIB_009: 6;

          hence ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2) by A4;

        end;

      end;

      hence F is directed;

      thus thesis;

    end;

    theorem :: GLIB_010:26

    

     Th26: for G1,G2 be _Graph holds for F be semi-continuous PGraphMapping of G1, G2, v1,v2 be object st v1 in ( dom (F _V )) & v2 in ( dom (F _V )) & ((F _V ) . v1) = ((F _V ) . v2) & ex e,w be object st e in ( dom (F _E )) & w in ( dom (F _V )) & ((F _E ) . e) Joins (((F _V ) . v1),((F _V ) . w),G2) holds v1 = v2

    proof

      let G1,G2 be _Graph, F be semi-continuous PGraphMapping of G1, G2;

      let v1,v2 be object;

      assume that

       A1: v1 in ( dom (F _V )) & v2 in ( dom (F _V )) & ((F _V ) . v1) = ((F _V ) . v2) and

       A2: ex e,w be object st e in ( dom (F _E )) & w in ( dom (F _V )) & ((F _E ) . e) Joins (((F _V ) . v1),((F _V ) . w),G2);

      consider e,w be object such that

       A3: e in ( dom (F _E )) & w in ( dom (F _V )) & ((F _E ) . e) Joins (((F _V ) . v1),((F _V ) . w),G2) by A2;

      

       A4: e Joins (v1,w,G1) by A1, A3, Def15;

      e Joins (v2,w,G1) by A1, A3, Def15;

      per cases by A4, GLIB_000: 15;

        suppose v1 = v2 & w = w;

        hence v1 = v2;

      end;

        suppose v1 = w & w = v2;

        hence v1 = v2;

      end;

    end;

    theorem :: GLIB_010:27

    for G1,G2 be _Graph holds for F be semi-continuous PGraphMapping of G1, G2 st for v be object st v in ( dom (F _V )) holds ex e,w be object st e in ( dom (F _E )) & w in ( dom (F _V )) & ((F _E ) . e) Joins (((F _V ) . v),((F _V ) . w),G2) holds (F _V ) is one-to-one

    proof

      let G1,G2 be _Graph, F be semi-continuous PGraphMapping of G1, G2;

      assume

       A1: for v be object st v in ( dom (F _V )) holds ex e,w be object st e in ( dom (F _E )) & w in ( dom (F _V )) & ((F _E ) . e) Joins (((F _V ) . v),((F _V ) . w),G2);

      now

        let v1,v2 be object;

        assume

         A2: v1 in ( dom (F _V )) & v2 in ( dom (F _V )) & ((F _V ) . v1) = ((F _V ) . v2);

        then

        consider e,w be object such that

         A3: e in ( dom (F _E )) & w in ( dom (F _V )) & ((F _E ) . e) Joins (((F _V ) . v1),((F _V ) . w),G2) by A1;

        thus v1 = v2 by A2, A3, Th26;

      end;

      hence thesis by FUNCT_1:def 4;

    end;

    theorem :: GLIB_010:28

    

     Th28: for G1,G2 be _Graph holds for F be semi-Dcontinuous PGraphMapping of G1, G2, v1,v2 be object st v1 in ( dom (F _V )) & v2 in ( dom (F _V )) & ((F _V ) . v1) = ((F _V ) . v2) & ex e,w be object st e in ( dom (F _E )) & w in ( dom (F _V )) & ((F _E ) . e) DJoins (((F _V ) . v1),((F _V ) . w),G2) holds v1 = v2

    proof

      let G1,G2 be _Graph, F be semi-Dcontinuous PGraphMapping of G1, G2;

      let v1,v2 be object;

      assume that

       A1: v1 in ( dom (F _V )) & v2 in ( dom (F _V )) & ((F _V ) . v1) = ((F _V ) . v2) and

       A2: ex e,w be object st e in ( dom (F _E )) & w in ( dom (F _V )) & ((F _E ) . e) DJoins (((F _V ) . v1),((F _V ) . w),G2);

      consider e,w be object such that

       A3: e in ( dom (F _E )) & w in ( dom (F _V )) & ((F _E ) . e) DJoins (((F _V ) . v1),((F _V ) . w),G2) by A2;

      

       A4: e DJoins (v1,w,G1) by A1, A3, Def17;

      e DJoins (v2,w,G1) by A1, A3, Def17;

      hence v1 = v2 by A4, GLIB_009: 6;

    end;

    theorem :: GLIB_010:29

    for G1,G2 be _Graph holds for F be semi-Dcontinuous PGraphMapping of G1, G2 st for v be object st v in ( dom (F _V )) holds ex e,w be object st e in ( dom (F _E )) & w in ( dom (F _V )) & ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2) holds (F _V ) is one-to-one

    proof

      let G1,G2 be _Graph, F be semi-Dcontinuous PGraphMapping of G1, G2;

      assume

       A1: for v be object st v in ( dom (F _V )) holds ex e,w be object st e in ( dom (F _E )) & w in ( dom (F _V )) & ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2);

      now

        let v1,v2 be object;

        assume

         A2: v1 in ( dom (F _V )) & v2 in ( dom (F _V )) & ((F _V ) . v1) = ((F _V ) . v2);

        then

        consider e,w be object such that

         A3: e in ( dom (F _E )) & w in ( dom (F _V )) & ((F _E ) . e) DJoins (((F _V ) . v1),((F _V ) . w),G2) by A1;

        thus v1 = v2 by A2, A3, Th28;

      end;

      hence thesis by FUNCT_1:def 4;

    end;

    registration

      let G1,G2 be _Graph;

      cluster one-to-one -> semi-continuous for PGraphMapping of G1, G2;

      coherence by Th17;

      cluster one-to-one directed -> semi-Dcontinuous for PGraphMapping of G1, G2;

      coherence by Th18;

      cluster one-to-one onto -> continuous for PGraphMapping of G1, G2;

      coherence by Th21;

      cluster directed one-to-one onto -> Dcontinuous for PGraphMapping of G1, G2;

      coherence by Th22;

      cluster semi-continuous onto -> continuous for PGraphMapping of G1, G2;

      coherence by Th19;

      cluster semi-Dcontinuous -> directed semi-continuous for PGraphMapping of G1, G2;

      coherence

      proof

        let F be PGraphMapping of G1, G2;

        assume

         A1: F is semi-Dcontinuous;

        hence F is directed by Th16;

        let e,v,w be object;

        assume

         A2: e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V ));

        assume ((F _E ) . e) Joins (((F _V ) . v),((F _V ) . w),G2);

        per cases by GLIB_000: 16;

          suppose ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2);

          then e DJoins (v,w,G1) by A1, A2;

          hence e Joins (v,w,G1) by GLIB_000: 16;

        end;

          suppose ((F _E ) . e) DJoins (((F _V ) . w),((F _V ) . v),G2);

          then e DJoins (w,v,G1) by A1, A2;

          hence e Joins (v,w,G1) by GLIB_000: 16;

        end;

      end;

      cluster semi-Dcontinuous onto -> Dcontinuous for PGraphMapping of G1, G2;

      coherence by Th20;

      cluster Dcontinuous -> continuous for PGraphMapping of G1, G2;

      coherence

      proof

        let F be PGraphMapping of G1, G2;

        assume

         A3: F is Dcontinuous;

        let e9,v,w be object;

        assume

         A4: v in ( dom (F _V )) & w in ( dom (F _V )) & e9 Joins (((F _V ) . v),((F _V ) . w),G2);

        per cases by GLIB_000: 16;

          suppose e9 DJoins (((F _V ) . v),((F _V ) . w),G2);

          then

          consider e be object such that

           A5: e DJoins (v,w,G1) & e in ( dom (F _E )) & ((F _E ) . e) = e9 by A3, A4;

          take e;

          thus thesis by A5, GLIB_000: 16;

        end;

          suppose e9 DJoins (((F _V ) . w),((F _V ) . v),G2);

          then

          consider e be object such that

           A6: e DJoins (w,v,G1) & e in ( dom (F _E )) & ((F _E ) . e) = e9 by A3, A4;

          take e;

          thus thesis by A6, GLIB_000: 16;

        end;

      end;

      cluster Dcontinuous one-to-one -> directed semi-Dcontinuous for PGraphMapping of G1, G2;

      coherence by Th25, Th24;

      cluster empty -> one-to-one Dcontinuous directed continuous for PGraphMapping of G1, G2;

      coherence ;

      cluster total -> non empty for PGraphMapping of G1, G2;

      coherence ;

      cluster onto -> non empty for PGraphMapping of G1, G2;

      coherence ;

    end

    registration

      let G be _Graph;

      cluster ( id G) -> total non empty onto one-to-one Dcontinuous;

      coherence

      proof

        thus ( id G) is total non empty onto one-to-one;

        let e9,v,w be object;

        assume that

         A1: v in ( dom (( id G) _V )) & w in ( dom (( id G) _V )) and

         A2: e9 DJoins (((( id G) _V ) . v),((( id G) _V ) . w),G);

        take e9;

        e9 DJoins (((( id G) _V ) . v),w,G) by A1, A2, FUNCT_1: 18;

        hence e9 DJoins (v,w,G) by A1, FUNCT_1: 18;

        

         A3: e9 in ( the_Edges_of G) by A2, GLIB_000:def 14;

        hence e9 in ( dom (( id G) _E ));

        thus ((( id G) _E ) . e9) = e9 by A3, FUNCT_1: 18;

      end;

    end

    theorem :: GLIB_010:30

    

     Th30: for G1,G2 be _Graph holds for f be PartFunc of ( the_Vertices_of G1), ( the_Vertices_of G2) holds for g be PartFunc of ( the_Edges_of G1), ( the_Edges_of G2) st ((for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f)) & for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e DJoins (v,w,G1) implies (g . e) DJoins ((f . v),(f . w),G2)) holds [f, g] is directed PGraphMapping of G1, G2

    proof

      let G1,G2 be _Graph;

      let f be PartFunc of ( the_Vertices_of G1), ( the_Vertices_of G2);

      let g be PartFunc of ( the_Edges_of G1), ( the_Edges_of G2);

      assume that

       A1: for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f) and

       A2: for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e DJoins (v,w,G1) implies (g . e) DJoins ((f . v),(f . w),G2);

       A3:

      now

        let e,v,w be object;

        assume

         A4: e in ( dom g) & v in ( dom f) & w in ( dom f);

        assume e Joins (v,w,G1);

        per cases by GLIB_000: 16;

          suppose e DJoins (v,w,G1);

          then (g . e) DJoins ((f . v),(f . w),G2) by A2, A4;

          hence (g . e) Joins ((f . v),(f . w),G2) by GLIB_000: 16;

        end;

          suppose e DJoins (w,v,G1);

          then (g . e) DJoins ((f . w),(f . v),G2) by A2, A4;

          hence (g . e) Joins ((f . v),(f . w),G2) by GLIB_000: 16;

        end;

      end;

      reconsider F = [f, g] as PGraphMapping of G1, G2 by A1, A3, Th8;

      F is directed by A2;

      hence thesis;

    end;

    theorem :: GLIB_010:31

    

     Th31: for G1,G2 be _Graph holds for f be PartFunc of ( the_Vertices_of G1), ( the_Vertices_of G2) holds for g be PartFunc of ( the_Edges_of G1), ( the_Edges_of G2) st ((for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f)) & for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) iff (g . e) Joins ((f . v),(f . w),G2)) holds [f, g] is semi-continuous PGraphMapping of G1, G2

    proof

      let G1,G2 be _Graph;

      let f be PartFunc of ( the_Vertices_of G1), ( the_Vertices_of G2);

      let g be PartFunc of ( the_Edges_of G1), ( the_Edges_of G2);

      assume that

       A1: for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f) and

       A2: for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) iff (g . e) Joins ((f . v),(f . w),G2);

      

       A3: for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),G2) by A2;

      reconsider F = [f, g] as PGraphMapping of G1, G2 by A1, A3, Th8;

      F is semi-continuous by A2;

      hence thesis;

    end;

    theorem :: GLIB_010:32

    for G1,G2 be _Graph holds for f be PartFunc of ( the_Vertices_of G1), ( the_Vertices_of G2) holds for g be PartFunc of ( the_Edges_of G1), ( the_Edges_of G2) st ((for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f)) & for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e DJoins (v,w,G1) iff (g . e) DJoins ((f . v),(f . w),G2)) holds [f, g] is semi-Dcontinuous PGraphMapping of G1, G2

    proof

      let G1,G2 be _Graph;

      let f be PartFunc of ( the_Vertices_of G1), ( the_Vertices_of G2);

      let g be PartFunc of ( the_Edges_of G1), ( the_Edges_of G2);

      assume that

       A1: for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f) and

       A2: for e,v,w be object st e in ( dom g) & v in ( dom f) & w in ( dom f) holds e DJoins (v,w,G1) iff (g . e) DJoins ((f . v),(f . w),G2);

       A3:

      now

        let e,v,w be object;

        assume

         A4: e in ( dom g) & v in ( dom f) & w in ( dom f);

        assume e Joins (v,w,G1);

        per cases by GLIB_000: 16;

          suppose e DJoins (v,w,G1);

          then (g . e) DJoins ((f . v),(f . w),G2) by A2, A4;

          hence (g . e) Joins ((f . v),(f . w),G2) by GLIB_000: 16;

        end;

          suppose e DJoins (w,v,G1);

          then (g . e) DJoins ((f . w),(f . v),G2) by A2, A4;

          hence (g . e) Joins ((f . v),(f . w),G2) by GLIB_000: 16;

        end;

      end;

      reconsider F = [f, g] as PGraphMapping of G1, G2 by A1, A3, Th8;

      F is semi-Dcontinuous by A2;

      hence thesis;

    end;

    theorem :: GLIB_010:33

    for G1,G2 be _Graph holds [ {} , {} ] is empty one-to-one Dcontinuous PGraphMapping of G1, G2

    proof

      let G1,G2 be _Graph;

      reconsider F = [ {} , {} ] as PGraphMapping of G1, G2 by Lm3;

      

       A1: F is empty;

      thus thesis by A1;

    end;

    theorem :: GLIB_010:34

    

     Th34: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 st F is total holds for v be Vertex of G1 holds ((F _V ) . v) is Vertex of G2

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      assume

       A1: F is total;

      let v be Vertex of G1;

      ((F _V ) . v) in ( rng (F _V )) by A1, FUNCT_1: 3;

      hence thesis;

    end;

    theorem :: GLIB_010:35

    

     Th35: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 st F is total holds (G2 is loopless implies G1 is loopless) & (G2 is edgeless implies G1 is edgeless)

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      assume

       A1: F is total;

      hereby

        assume

         A2: G2 is loopless;

         not ex e be object st e in ( the_Edges_of G1) & (( the_Source_of G1) . e) = (( the_Target_of G1) . e)

        proof

          given e be object such that

           A3: e in ( the_Edges_of G1) and

           A4: (( the_Source_of G1) . e) = (( the_Target_of G1) . e);

          set v = (( the_Source_of G1) . e);

          

           A5: e Joins (v,v,G1) by A3, A4, GLIB_000:def 13;

          then v in ( dom (F _V )) by A1, GLIB_000: 13;

          then ((F _E ) . e) Joins (((F _V ) . v),((F _V ) . v),G2) by A1, A3, A5, Th4;

          hence contradiction by A2, GLIB_000: 18;

        end;

        hence G1 is loopless by GLIB_000:def 18;

      end;

      thus G2 is edgeless implies G1 is edgeless by A1;

    end;

    theorem :: GLIB_010:36

    

     Th36: for G1,G2 be _Graph, F be continuous PGraphMapping of G1, G2 st ( rng (F _V )) = ( the_Vertices_of G2) holds G1 is loopless implies G2 is loopless

    proof

      let G1,G2 be _Graph, F be continuous PGraphMapping of G1, G2;

      assume

       A1: ( rng (F _V )) = ( the_Vertices_of G2);

      assume

       A2: G1 is loopless;

      for v be object holds not ex e be object st e Joins (v,v,G2)

      proof

        let v be object;

        given e9 be object such that

         A3: e9 Joins (v,v,G2);

        v in ( rng (F _V )) by A1, A3, GLIB_000: 13;

        then

        consider v0 be object such that

         A4: v0 in ( dom (F _V )) & ((F _V ) . v0) = v by FUNCT_1:def 3;

        consider e be object such that

         A5: e Joins (v0,v0,G1) & e in ( dom (F _E )) & ((F _E ) . e) = e9 by A3, A4, Def16;

        thus contradiction by A2, A5, GLIB_000: 18;

      end;

      hence G2 is loopless by GLIB_000: 18;

    end;

    theorem :: GLIB_010:37

    for G1,G2 be _Graph, F be semi-continuous PGraphMapping of G1, G2 st F is onto holds G1 is loopless implies G2 is loopless by Th36;

    theorem :: GLIB_010:38

    for G1,G2 be _Graph, F be PGraphMapping of G1, G2 st ( rng (F _E )) = ( the_Edges_of G2) holds G1 is edgeless implies G2 is edgeless;

    theorem :: GLIB_010:39

    for G1,G2 be _Graph, F be PGraphMapping of G1, G2 st F is onto holds G1 is edgeless implies G2 is edgeless;

    theorem :: GLIB_010:40

    for G1 be _Graph, G2 be non-multi _Graph holds for F1,F2 be PGraphMapping of G1, G2 st (F1 _V ) = (F2 _V ) & ( dom (F1 _E )) = ( dom (F2 _E )) holds F1 = F2

    proof

      let G1 be _Graph, G2 be non-multi _Graph;

      let F1,F2 be PGraphMapping of G1, G2;

      assume that

       A1: (F1 _V ) = (F2 _V ) and

       A2: ( dom (F1 _E )) = ( dom (F2 _E ));

      for e be object st e in ( dom (F1 _E )) holds ((F1 _E ) . e) = ((F2 _E ) . e)

      proof

        let e be object;

        set v = (( the_Source_of G1) . e), w = (( the_Target_of G1) . e);

        assume

         A3: e in ( dom (F1 _E ));

        then

         A4: v in ( dom (F1 _V )) & w in ( dom (F1 _V )) by Th5;

        

         A5: e Joins (v,w,G1) by A3, GLIB_000:def 13;

        then

         A6: ((F1 _E ) . e) Joins (((F1 _V ) . v),((F1 _V ) . w),G2) by A3, A4, Th4;

        

         A7: e in ( dom (F2 _E )) by A2, A3;

        then v in ( dom (F2 _V )) & w in ( dom (F2 _V )) by Th5;

        then ((F2 _E ) . e) Joins (((F1 _V ) . v),((F2 _V ) . w),G2) by A1, A5, A7, Th4;

        hence ((F1 _E ) . e) = ((F2 _E ) . e) by A1, A6, GLIB_000:def 20;

      end;

      then (F1 _E ) = (F2 _E ) by A2, FUNCT_1: 2;

      hence thesis by A1, XTUPLE_0: 2;

    end;

    theorem :: GLIB_010:41

    for G1 be _Graph, G2 be non-Dmulti _Graph holds for F1,F2 be directed PGraphMapping of G1, G2 st (F1 _V ) = (F2 _V ) & ( dom (F1 _E )) = ( dom (F2 _E )) holds F1 = F2

    proof

      let G1 be _Graph, G2 be non-Dmulti _Graph;

      let F1,F2 be directed PGraphMapping of G1, G2;

      assume that

       A1: (F1 _V ) = (F2 _V ) and

       A2: ( dom (F1 _E )) = ( dom (F2 _E ));

      for e be object st e in ( dom (F1 _E )) holds ((F1 _E ) . e) = ((F2 _E ) . e)

      proof

        let e be object;

        set v = (( the_Source_of G1) . e), w = (( the_Target_of G1) . e);

        assume

         A3: e in ( dom (F1 _E ));

        then

         A4: v in ( dom (F1 _V )) & w in ( dom (F1 _V )) by Th5;

        

         A5: e DJoins (v,w,G1) by A3, GLIB_000:def 14;

        then

         A6: ((F1 _E ) . e) DJoins (((F1 _V ) . v),((F1 _V ) . w),G2) by A3, A4, Def14;

        

         A7: e in ( dom (F2 _E )) by A2, A3;

        then v in ( dom (F2 _V )) & w in ( dom (F2 _V )) by Th5;

        then ((F2 _E ) . e) DJoins (((F1 _V ) . v),((F2 _V ) . w),G2) by A1, A5, A7, Def14;

        hence ((F1 _E ) . e) = ((F2 _E ) . e) by A1, A6, GLIB_000:def 21;

      end;

      then (F1 _E ) = (F2 _E ) by A2, FUNCT_1: 2;

      hence thesis by A1, XTUPLE_0: 2;

    end;

    theorem :: GLIB_010:42

    for G1 be non-multi _Graph, G2 be _Graph holds for F be semi-continuous PGraphMapping of G1, G2 holds (F _E ) is one-to-one

    proof

      let G1 be non-multi _Graph, G2 be _Graph;

      let F be semi-continuous PGraphMapping of G1, G2;

      now

        let e1,e2 be object;

        assume

         A1: e1 in ( dom (F _E )) & e2 in ( dom (F _E )) & ((F _E ) . e1) = ((F _E ) . e2);

        then

         A2: (( the_Source_of G1) . e1) in ( dom (F _V )) & (( the_Target_of G1) . e1) in ( dom (F _V )) by Th5;

        

         A3: e1 Joins ((( the_Source_of G1) . e1),(( the_Target_of G1) . e1),G1) by A1, GLIB_000:def 13;

        then ((F _E ) . e2) Joins (((F _V ) . (( the_Source_of G1) . e1)),((F _V ) . (( the_Target_of G1) . e1)),G2) by A1, A2, Th4;

        then e2 Joins ((( the_Source_of G1) . e1),(( the_Target_of G1) . e1),G1) by A1, A2, Def15;

        hence e1 = e2 by A3, GLIB_000:def 20;

      end;

      hence thesis by FUNCT_1:def 4;

    end;

    theorem :: GLIB_010:43

    for G1 be non-multi _Graph, G2 be _Graph holds for F be PGraphMapping of G1, G2 st (F _V ) is one-to-one holds (F _E ) is one-to-one

    proof

      let G1 be non-multi _Graph, G2 be _Graph;

      let F be PGraphMapping of G1, G2;

      assume

       A1: (F _V ) is one-to-one;

      now

        let e1,e2 be object;

        set v1 = (( the_Source_of G1) . e1), w1 = (( the_Target_of G1) . e1), v2 = (( the_Source_of G1) . e2), w2 = (( the_Target_of G1) . e2);

        assume

         A2: e1 in ( dom (F _E )) & e2 in ( dom (F _E )) & ((F _E ) . e1) = ((F _E ) . e2);

        then

         A3: v1 in ( dom (F _V )) & w1 in ( dom (F _V )) & v2 in ( dom (F _V )) & w2 in ( dom (F _V )) by Th5;

        

         A4: e1 Joins (v1,w1,G1) & e2 Joins (v2,w2,G1) by A2, GLIB_000:def 13;

        then ((F _E ) . e1) Joins (((F _V ) . v1),((F _V ) . w1),G2) & ((F _E ) . e2) Joins (((F _V ) . v2),((F _V ) . w2),G2) by A2, A3, Th4;

        per cases by A2, GLIB_000: 15;

          suppose ((F _V ) . v1) = ((F _V ) . v2) & ((F _V ) . w1) = ((F _V ) . w2);

          then v1 = v2 & w1 = w2 by A1, A3, FUNCT_1:def 4;

          hence e1 = e2 by A4, GLIB_000:def 20;

        end;

          suppose ((F _V ) . v1) = ((F _V ) . w2) & ((F _V ) . w1) = ((F _V ) . v2);

          then v1 = w2 & w1 = v2 by A1, A3, FUNCT_1:def 4;

          then e2 Joins (v1,w1,G1) by A4, GLIB_000: 14;

          hence e1 = e2 by A4, GLIB_000:def 20;

        end;

      end;

      hence thesis by FUNCT_1:def 4;

    end;

    theorem :: GLIB_010:44

    for G1 be non-Dmulti _Graph, G2 be _Graph holds for F be directed PGraphMapping of G1, G2 st (F _V ) is one-to-one holds (F _E ) is one-to-one

    proof

      let G1 be non-Dmulti _Graph, G2 be _Graph;

      let F be directed PGraphMapping of G1, G2;

      assume

       A1: (F _V ) is one-to-one;

      now

        let e1,e2 be object;

        set v1 = (( the_Source_of G1) . e1), w1 = (( the_Target_of G1) . e1), v2 = (( the_Source_of G1) . e2), w2 = (( the_Target_of G1) . e2);

        assume

         A2: e1 in ( dom (F _E )) & e2 in ( dom (F _E )) & ((F _E ) . e1) = ((F _E ) . e2);

        then

         A3: v1 in ( dom (F _V )) & w1 in ( dom (F _V )) & v2 in ( dom (F _V )) & w2 in ( dom (F _V )) by Th5;

        

         A4: e1 DJoins (v1,w1,G1) & e2 DJoins (v2,w2,G1) by A2, GLIB_000:def 14;

        then ((F _E ) . e1) DJoins (((F _V ) . v1),((F _V ) . w1),G2) & ((F _E ) . e2) DJoins (((F _V ) . v2),((F _V ) . w2),G2) by A2, A3, Def14;

        then ((F _V ) . v1) = ((F _V ) . v2) & ((F _V ) . w1) = ((F _V ) . w2) by A2, GLIB_009: 6;

        then v1 = v2 & w1 = w2 by A1, A3, FUNCT_1:def 4;

        hence e1 = e2 by A4, GLIB_000:def 21;

      end;

      hence thesis by FUNCT_1:def 4;

    end;

    registration

      let G1 be _Graph, G2 be loopless _Graph;

      cluster directed semi-continuous -> semi-Dcontinuous for PGraphMapping of G1, G2;

      coherence

      proof

        let F be PGraphMapping of G1, G2;

        assume

         A1: F is directed semi-continuous;

        let e,v,w be object;

        assume

         A2: e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V ));

        assume

         A3: ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2);

        then ((F _E ) . e) Joins (((F _V ) . v),((F _V ) . w),G2) by GLIB_000: 16;

        then

         A4: e Joins (v,w,G1) by A1, A2;

        assume not e DJoins (v,w,G1);

        then e DJoins (w,v,G1) by A4, GLIB_000: 16;

        then ((F _E ) . e) DJoins (((F _V ) . w),((F _V ) . v),G2) by A1, A2;

        then (( the_Source_of G2) . ((F _E ) . e)) = ((F _V ) . w) by GLIB_000:def 14;

        then ((F _V ) . v) = ((F _V ) . w) by A3, GLIB_000:def 14;

        then ((F _E ) . e) Joins (((F _V ) . v),((F _V ) . v),G2) by A3, GLIB_000: 16;

        hence contradiction by GLIB_000: 18;

      end;

      cluster directed continuous -> Dcontinuous for PGraphMapping of G1, G2;

      coherence

      proof

        let F be PGraphMapping of G1, G2;

        assume

         A5: F is directed continuous;

        let e9,v,w be object;

        assume

         A6: v in ( dom (F _V )) & w in ( dom (F _V )) & e9 DJoins (((F _V ) . v),((F _V ) . w),G2);

        then

         A7: e9 Joins (((F _V ) . v),((F _V ) . w),G2) by GLIB_000: 16;

        then

        consider e be object such that

         A8: e Joins (v,w,G1) & e in ( dom (F _E )) & ((F _E ) . e) = e9 by A5, A6;

        take e;

         not e DJoins (w,v,G1)

        proof

          assume e DJoins (w,v,G1);

          then e9 DJoins (((F _V ) . w),((F _V ) . v),G2) by A5, A6, A8;

          then ((F _V ) . v) = ((F _V ) . w) by A6, GLIB_009: 6;

          hence contradiction by A7, GLIB_000: 18;

        end;

        hence thesis by A8, GLIB_000: 16;

      end;

    end

    registration

      let G1 be _trivial _Graph, G2 be _Graph;

      cluster -> directed for PGraphMapping of G1, G2;

      coherence

      proof

        let F be PGraphMapping of G1, G2;

        consider u be Vertex of G1 such that

         A1: ( the_Vertices_of G1) = {u} by GLIB_000: 22;

        for e,v,w be object st e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V )) holds e DJoins (v,w,G1) implies ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2)

        proof

          let e,v,w be object;

          assume

           A2: e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V ));

          then

           A3: v = u & w = u by A1, TARSKI:def 1;

          assume e DJoins (v,w,G1);

          then e Joins (u,u,G1) by A3, GLIB_000: 16;

          hence ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2) by A2, A3, Th4, GLIB_000: 16;

        end;

        hence F is directed;

      end;

      cluster semi-continuous -> semi-Dcontinuous for PGraphMapping of G1, G2;

      coherence

      proof

        let F be PGraphMapping of G1, G2;

        assume

         A4: F is semi-continuous;

        consider u be Vertex of G1 such that

         A5: ( the_Vertices_of G1) = {u} by GLIB_000: 22;

        for e,v,w be object st e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V )) holds e DJoins (v,w,G1) iff ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2)

        proof

          let e,v,w be object;

          assume

           A6: e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V ));

          then

           A7: v = u & w = u by A5, TARSKI:def 1;

          hereby

            assume e DJoins (v,w,G1);

            then e Joins (u,u,G1) by A7, GLIB_000: 16;

            hence ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2) by A6, A7, Th4, GLIB_000: 16;

          end;

          assume ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2);

          then ((F _E ) . e) Joins (((F _V ) . u),((F _V ) . u),G2) by A7, GLIB_000: 16;

          then e Joins (u,u,G1) by A4, A6, A7;

          hence e DJoins (v,w,G1) by A7, GLIB_000: 16;

        end;

        hence F is semi-Dcontinuous;

      end;

      cluster continuous -> Dcontinuous for PGraphMapping of G1, G2;

      coherence

      proof

        let F be PGraphMapping of G1, G2;

        assume

         A8: F is continuous;

        consider u be Vertex of G1 such that

         A9: ( the_Vertices_of G1) = {u} by GLIB_000: 22;

        now

          let e9,v,w be object;

          assume

           A10: v in ( dom (F _V )) & w in ( dom (F _V )) & e9 DJoins (((F _V ) . v),((F _V ) . w),G2);

          then

           A11: v = u & w = u by A9, TARSKI:def 1;

          e9 Joins (((F _V ) . v),((F _V ) . w),G2) by A10, GLIB_000: 16;

          then

          consider e be object such that

           A12: e Joins (v,w,G1) & e in ( dom (F _E )) & ((F _E ) . e) = e9 by A8, A10;

          take e;

          e DJoins (v,w,G1) or e DJoins (w,v,G1) by A12, GLIB_000: 16;

          hence e DJoins (v,w,G1) & e in ( dom (F _E )) & ((F _E ) . e) = e9 by A11, A12;

        end;

        hence F is Dcontinuous;

      end;

    end

    registration

      let G1 be _trivial non-Dmulti _Graph, G2 be _Graph;

      cluster -> one-to-one for PGraphMapping of G1, G2;

      coherence

      proof

        let F be PGraphMapping of G1, G2;

        ( dom (F _V )) is trivial & ( dom (F _E )) is trivial by ZFMISC_1: 130;

        then (F _V ) is trivial & (F _E ) is trivial;

        hence thesis;

      end;

    end

    registration

      let G1 be _trivial edgeless _Graph, G2 be _Graph;

      cluster non empty -> total for PGraphMapping of G1, G2;

      coherence

      proof

        let F be PGraphMapping of G1, G2;

        consider v be Vertex of G1 such that

         A1: ( the_Vertices_of G1) = {v} by GLIB_000: 22;

        assume F is non empty;

        then ( dom (F _V )) is non empty;

        hence ( dom (F _V )) = ( the_Vertices_of G1) by A1, ZFMISC_1: 33;

        thus ( dom (F _E )) = ( the_Edges_of G1);

      end;

    end

    registration

      let G1 be _Graph, G2 be _trivial edgeless _Graph;

      cluster non empty -> onto for PGraphMapping of G1, G2;

      coherence

      proof

        let F be PGraphMapping of G1, G2;

        consider v be Vertex of G2 such that

         A1: ( the_Vertices_of G2) = {v} by GLIB_000: 22;

        assume F is non empty;

        then ( rng (F _V )) is non empty;

        hence ( rng (F _V )) = ( the_Vertices_of G2) by A1, ZFMISC_1: 33;

        thus ( rng (F _E )) = ( the_Edges_of G2);

      end;

      cluster -> semi-continuous continuous for PGraphMapping of G1, G2;

      coherence by GLIB_000:def 13;

    end

    definition

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      :: GLIB_010:def19

      attr F is weak_SG-embedding means F is total one-to-one;

      :: GLIB_010:def20

      attr F is strong_SG-embedding means F is total one-to-one continuous;

      :: GLIB_010:def21

      attr F is isomorphism means F is total one-to-one onto;

      :: GLIB_010:def22

      attr F is Disomorphism means F is directed total one-to-one onto;

    end

    registration

      let G1,G2 be _Graph;

      cluster weak_SG-embedding -> total non empty one-to-one semi-continuous for PGraphMapping of G1, G2;

      coherence ;

      cluster total one-to-one -> weak_SG-embedding for PGraphMapping of G1, G2;

      coherence ;

      cluster strong_SG-embedding -> total non empty one-to-one continuous weak_SG-embedding for PGraphMapping of G1, G2;

      coherence ;

      cluster total one-to-one continuous -> strong_SG-embedding for PGraphMapping of G1, G2;

      coherence ;

      cluster weak_SG-embedding continuous -> strong_SG-embedding for PGraphMapping of G1, G2;

      coherence ;

      cluster isomorphism -> onto semi-continuous continuous total non empty one-to-one weak_SG-embedding strong_SG-embedding for PGraphMapping of G1, G2;

      coherence ;

      cluster total one-to-one onto continuous -> isomorphism for PGraphMapping of G1, G2;

      coherence ;

      cluster strong_SG-embedding onto -> isomorphism for PGraphMapping of G1, G2;

      coherence ;

      cluster weak_SG-embedding continuous onto -> isomorphism for PGraphMapping of G1, G2;

      coherence ;

      cluster Disomorphism -> directed isomorphism continuous total non empty semi-Dcontinuous semi-continuous one-to-one weak_SG-embedding strong_SG-embedding for PGraphMapping of G1, G2;

      coherence ;

      cluster directed isomorphism -> Dcontinuous Disomorphism for PGraphMapping of G1, G2;

      coherence ;

    end

    registration

      let G be _Graph;

      cluster ( id G) -> weak_SG-embedding strong_SG-embedding isomorphism Disomorphism;

      coherence ;

    end

    registration

      let G be _Graph;

      cluster weak_SG-embedding strong_SG-embedding isomorphism Disomorphism for PGraphMapping of G, G;

      existence

      proof

        take ( id G);

        thus thesis;

      end;

    end

    theorem :: GLIB_010:45

    

     Th45: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 st F is weak_SG-embedding holds (G1 .order() ) c= (G2 .order() ) & (G1 .size() ) c= (G2 .size() )

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      assume F is weak_SG-embedding;

      then

       A1: ( dom (F _V )) = ( the_Vertices_of G1) & ( dom (F _E )) = ( the_Edges_of G1) & (F _V ) is one-to-one & (F _E ) is one-to-one by Def11;

      ( rng (F _V )) c= ( the_Vertices_of G2) & ( rng (F _E )) c= ( the_Edges_of G2);

      then

       A2: ( card ( the_Vertices_of G1)) c= ( card ( the_Vertices_of G2)) & ( card ( the_Edges_of G1)) c= ( card ( the_Edges_of G2)) by A1, CARD_1: 10;

      then (G1 .order() ) c= ( card ( the_Vertices_of G2)) by GLIB_000:def 24;

      hence (G1 .order() ) c= (G2 .order() ) by GLIB_000:def 24;

      (G1 .size() ) c= ( card ( the_Edges_of G2)) by A2, GLIB_000:def 25;

      hence (G1 .size() ) c= (G2 .size() ) by GLIB_000:def 25;

    end;

    theorem :: GLIB_010:46

    

     Th46: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 holds for X,Y be Subset of ( the_Vertices_of G1) st F is weak_SG-embedding holds ( card (G1 .edgesBetween (X,Y))) c= ( card (G2 .edgesBetween (((F _V ) .: X),((F _V ) .: Y))))

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      let X,Y be Subset of ( the_Vertices_of G1);

      assume

       A1: F is weak_SG-embedding;

      set f = ((F _E ) | (G1 .edgesBetween (X,Y)));

      

       A2: ( dom f) = (( dom (F _E )) /\ (G1 .edgesBetween (X,Y))) by RELAT_1: 61

      .= (( the_Edges_of G1) /\ (G1 .edgesBetween (X,Y))) by A1, Def11

      .= (G1 .edgesBetween (X,Y)) by XBOOLE_1: 28;

      for y be object holds y in ( rng f) implies y in (G2 .edgesBetween (((F _V ) .: X),((F _V ) .: Y)))

      proof

        let y be object;

        assume y in ( rng f);

        then

        consider x be object such that

         A3: x in ( dom f) & (f . x) = y by FUNCT_1:def 3;

        set v = (( the_Source_of G1) . x), w = (( the_Target_of G1) . x);

        

         A4: x SJoins (X,Y,G1) by A2, A3, GLIB_000:def 30;

        per cases by GLIB_000:def 15;

          suppose

           A5: v in X & w in Y;

          then v in ( the_Vertices_of G1) & w in ( the_Vertices_of G1);

          then

           A6: v in ( dom (F _V )) & w in ( dom (F _V )) by A1, Def11;

          

           A7: x in ( the_Edges_of G1) by A4, GLIB_000:def 15;

          then

           A8: x in ( dom (F _E )) by A1, Def11;

          x Joins (v,w,G1) by A7, GLIB_000:def 13;

          then ((F _E ) . x) Joins (((F _V ) . v),((F _V ) . w),G2) by A6, A8, Th4;

          then

           A9: y Joins (((F _V ) . v),((F _V ) . w),G2) by A3, FUNCT_1: 47;

          ((F _V ) . v) in ((F _V ) .: X) & ((F _V ) . w) in ((F _V ) .: Y) by A5, A6, FUNCT_1:def 6;

          then y SJoins (((F _V ) .: X),((F _V ) .: Y),G2) by A9, GLIB_000: 17;

          hence thesis by GLIB_000:def 30;

        end;

          suppose

           A10: v in Y & w in X;

          then v in ( the_Vertices_of G1) & w in ( the_Vertices_of G1);

          then

           A11: v in ( dom (F _V )) & w in ( dom (F _V )) by A1, Def11;

          

           A12: x in ( the_Edges_of G1) by A4, GLIB_000:def 15;

          then

           A13: x in ( dom (F _E )) by A1, Def11;

          x Joins (v,w,G1) by A12, GLIB_000:def 13;

          then ((F _E ) . x) Joins (((F _V ) . v),((F _V ) . w),G2) by A11, A13, Th4;

          then

           A14: y Joins (((F _V ) . v),((F _V ) . w),G2) by A3, FUNCT_1: 47;

          ((F _V ) . v) in ((F _V ) .: Y) & ((F _V ) . w) in ((F _V ) .: X) by A10, A11, FUNCT_1:def 6;

          then y SJoins (((F _V ) .: X),((F _V ) .: Y),G2) by A14, GLIB_000: 17;

          hence thesis by GLIB_000:def 30;

        end;

      end;

      then

       A15: ( rng f) c= (G2 .edgesBetween (((F _V ) .: X),((F _V ) .: Y))) by TARSKI:def 3;

      f is one-to-one by A1, FUNCT_1: 52;

      hence thesis by A2, A15, CARD_1: 10;

    end;

    theorem :: GLIB_010:47

    

     Th47: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 holds for X be Subset of ( the_Vertices_of G1) st F is weak_SG-embedding holds ( card (G1 .edgesBetween X)) c= ( card (G2 .edgesBetween ((F _V ) .: X)))

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      let X be Subset of ( the_Vertices_of G1);

      assume

       A1: F is weak_SG-embedding;

      set f = ((F _E ) | (G1 .edgesBetween X));

      

       A2: ( dom f) = (( dom (F _E )) /\ (G1 .edgesBetween X)) by RELAT_1: 61

      .= (( the_Edges_of G1) /\ (G1 .edgesBetween X)) by A1, Def11

      .= (G1 .edgesBetween X) by XBOOLE_1: 28;

      for y be object holds y in ( rng f) implies y in (G2 .edgesBetween ((F _V ) .: X))

      proof

        let y be object;

        assume y in ( rng f);

        then

        consider x be object such that

         A3: x in ( dom f) & (f . x) = y by FUNCT_1:def 3;

        set v = (( the_Source_of G1) . x), w = (( the_Target_of G1) . x);

        

         A4: x in ( the_Edges_of G1) & v in X & w in X by A2, A3, GLIB_000: 31;

        then v in ( the_Vertices_of G1) & w in ( the_Vertices_of G1);

        then

         A5: v in ( dom (F _V )) & w in ( dom (F _V )) by A1, Def11;

        

         A6: x in ( dom (F _E )) by A1, A4, Def11;

        x Joins (v,w,G1) by A4, GLIB_000:def 13;

        then ((F _E ) . x) Joins (((F _V ) . v),((F _V ) . w),G2) by A5, A6, Th4;

        then

         A7: y Joins (((F _V ) . v),((F _V ) . w),G2) by A3, FUNCT_1: 47;

        ((F _V ) . v) in ((F _V ) .: X) & ((F _V ) . w) in ((F _V ) .: X) by A4, A5, FUNCT_1:def 6;

        hence thesis by A7, GLIB_000: 32;

      end;

      then

       A8: ( rng f) c= (G2 .edgesBetween ((F _V ) .: X)) by TARSKI:def 3;

      f is one-to-one by A1, FUNCT_1: 52;

      hence thesis by A2, A8, CARD_1: 10;

    end;

    theorem :: GLIB_010:48

    

     Th48: for G1,G2 be _Graph, F be directed PGraphMapping of G1, G2 holds for X,Y be Subset of ( the_Vertices_of G1) st F is weak_SG-embedding holds ( card (G1 .edgesDBetween (X,Y))) c= ( card (G2 .edgesDBetween (((F _V ) .: X),((F _V ) .: Y))))

    proof

      let G1,G2 be _Graph, F be directed PGraphMapping of G1, G2;

      let X,Y be Subset of ( the_Vertices_of G1);

      assume

       A1: F is weak_SG-embedding;

      set f = ((F _E ) | (G1 .edgesDBetween (X,Y)));

      

       A2: ( dom f) = (( dom (F _E )) /\ (G1 .edgesDBetween (X,Y))) by RELAT_1: 61

      .= (( the_Edges_of G1) /\ (G1 .edgesDBetween (X,Y))) by A1, Def11

      .= (G1 .edgesDBetween (X,Y)) by XBOOLE_1: 28;

      for y be object holds y in ( rng f) implies y in (G2 .edgesDBetween (((F _V ) .: X),((F _V ) .: Y)))

      proof

        let y be object;

        assume y in ( rng f);

        then

        consider x be object such that

         A3: x in ( dom f) & (f . x) = y by FUNCT_1:def 3;

        set v = (( the_Source_of G1) . x), w = (( the_Target_of G1) . x);

        

         A4: x DSJoins (X,Y,G1) by A2, A3, GLIB_000:def 31;

        then

         A5: v in X & w in Y by GLIB_000:def 16;

        then v in ( the_Vertices_of G1) & w in ( the_Vertices_of G1);

        then

         A6: v in ( dom (F _V )) & w in ( dom (F _V )) by A1, Def11;

        

         A7: x in ( the_Edges_of G1) by A4, GLIB_000:def 16;

        then

         A8: x in ( dom (F _E )) by A1, Def11;

        x DJoins (v,w,G1) by A7, GLIB_000:def 14;

        then ((F _E ) . x) DJoins (((F _V ) . v),((F _V ) . w),G2) by A6, A8, Def14;

        then

         A9: y DJoins (((F _V ) . v),((F _V ) . w),G2) by A3, FUNCT_1: 47;

        ((F _V ) . v) in ((F _V ) .: X) & ((F _V ) . w) in ((F _V ) .: Y) by A5, A6, FUNCT_1:def 6;

        then y DSJoins (((F _V ) .: X),((F _V ) .: Y),G2) by A9, GLIB_009: 7;

        hence thesis by GLIB_000:def 31;

      end;

      then

       A10: ( rng f) c= (G2 .edgesDBetween (((F _V ) .: X),((F _V ) .: Y))) by TARSKI:def 3;

      f is one-to-one by A1, FUNCT_1: 52;

      hence thesis by A2, A10, CARD_1: 10;

    end;

    theorem :: GLIB_010:49

    

     Th49: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 st F is weak_SG-embedding holds (G2 is _trivial implies G1 is _trivial) & (G2 is non-multi implies G1 is non-multi) & (G2 is simple implies G1 is simple) & (G2 is _finite implies G1 is _finite)

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      assume

       A1: F is weak_SG-embedding;

      hereby

        assume G2 is _trivial;

        then ( card ( the_Vertices_of G2)) = 1 by GLIB_000:def 19;

        then

         A2: (G2 .order() ) = 1 by GLIB_000:def 24;

        (G1 .order() ) = 1

        proof

          assume (G1 .order() ) <> 1;

          then (G1 .order() ) in 1 by A1, A2, Th45, CARD_1: 3;

          then (G1 .order() ) = 0 by CARD_1: 49, TARSKI:def 1;

          then ( card ( the_Vertices_of G1)) = 0 by GLIB_000:def 24;

          hence thesis;

        end;

        then ( card ( the_Vertices_of G1)) = 1 by GLIB_000:def 24;

        hence G1 is _trivial by GLIB_000:def 19;

      end;

      thus

       A3: G2 is non-multi implies G1 is non-multi

      proof

        assume

         A4: G2 is non-multi;

        for e1,e2,v1,v2 be object holds e1 Joins (v1,v2,G1) & e2 Joins (v1,v2,G1) implies e1 = e2

        proof

          let e1,e2,v1,v2 be object;

          assume

           A5: e1 Joins (v1,v2,G1) & e2 Joins (v1,v2,G1);

          then e1 in ( the_Edges_of G1) & e2 in ( the_Edges_of G1) by GLIB_000:def 13;

          then

           A6: e1 in ( dom (F _E )) & e2 in ( dom (F _E )) by A1, Def11;

          v1 in ( the_Vertices_of G1) & v2 in ( the_Vertices_of G1) by A5, GLIB_000: 13;

          then v1 in ( dom (F _V )) & v2 in ( dom (F _V )) by A1, Def11;

          then ((F _E ) . e1) Joins (((F _V ) . v1),((F _V ) . v2),G2) & ((F _E ) . e2) Joins (((F _V ) . v1),((F _V ) . v2),G2) by A5, A6, Th4;

          hence e1 = e2 by A1, A4, A6, GLIB_000:def 20, FUNCT_1:def 4;

        end;

        hence G1 is non-multi by GLIB_000:def 20;

      end;

      hereby

        assume G2 is simple;

        then G1 is loopless non-multi by A3, A1, Th35;

        hence G1 is simple;

      end;

      assume G2 is _finite;

      then ( card ( the_Vertices_of G2)) is finite & ( card ( the_Edges_of G2)) is finite;

      then

       A7: (G2 .order() ) is finite & (G2 .size() ) is finite by GLIB_000:def 24, GLIB_000:def 25;

      (G1 .order() ) c= (G2 .order() ) & (G1 .size() ) c= (G2 .size() ) by A1, Th45;

      then ( card ( the_Vertices_of G1)) is finite & ( card ( the_Edges_of G1)) is finite by A7, GLIB_000:def 24, GLIB_000:def 25;

      then ( the_Vertices_of G1) is finite & ( the_Edges_of G1) is finite;

      hence thesis by GLIB_000:def 17;

    end;

    theorem :: GLIB_010:50

    

     Th50: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 st F is directed weak_SG-embedding holds (G2 is non-Dmulti implies G1 is non-Dmulti) & (G2 is Dsimple implies G1 is Dsimple)

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      assume

       A1: F is directed weak_SG-embedding;

      thus

       A2: G2 is non-Dmulti implies G1 is non-Dmulti

      proof

        assume

         A3: G2 is non-Dmulti;

        for e1,e2,v1,v2 be object holds e1 DJoins (v1,v2,G1) & e2 DJoins (v1,v2,G1) implies e1 = e2

        proof

          let e1,e2,v1,v2 be object;

          assume

           A4: e1 DJoins (v1,v2,G1) & e2 DJoins (v1,v2,G1);

          then e1 in ( the_Edges_of G1) & e2 in ( the_Edges_of G1) by GLIB_000:def 14;

          then

           A5: e1 in ( dom (F _E )) & e2 in ( dom (F _E )) by A1, Def11;

          e1 Joins (v1,v2,G1) & e2 Joins (v1,v2,G1) by A4, GLIB_000: 16;

          then v1 in ( the_Vertices_of G1) & v2 in ( the_Vertices_of G1) by GLIB_000: 13;

          then

           A6: v1 in ( dom (F _V )) & v2 in ( dom (F _V )) by A1, Def11;

          then

           A7: ((F _E ) . e1) DJoins (((F _V ) . v1),((F _V ) . v2),G2) by A1, A4, A5;

          ((F _E ) . e2) DJoins (((F _V ) . v1),((F _V ) . v2),G2) by A1, A4, A5, A6;

          hence e1 = e2 by A1, A3, A5, A7, FUNCT_1:def 4, GLIB_000:def 21;

        end;

        hence G1 is non-Dmulti by GLIB_000:def 21;

      end;

      assume G2 is Dsimple;

      then G1 is loopless non-Dmulti by A2, A1, Th35;

      hence G1 is Dsimple;

    end;

    theorem :: GLIB_010:51

    

     Th51: for G1,G2 be _finite _Graph, F be PGraphMapping of G1, G2 st F is strong_SG-embedding & (G1 .order() ) = (G2 .order() ) & (G1 .size() ) = (G2 .size() ) holds F is isomorphism

    proof

      let G1,G2 be _finite _Graph, F be PGraphMapping of G1, G2;

      assume that

       A1: F is strong_SG-embedding and

       A2: (G1 .order() ) = (G2 .order() ) & (G1 .size() ) = (G2 .size() );

      

       A3: ( card ( rng (F _V ))) = ( card ( dom (F _V ))) by A1, CARD_1: 70

      .= ( card ( the_Vertices_of G1)) by A1, Def11

      .= (G2 .order() ) by A2, GLIB_000:def 24

      .= ( card ( the_Vertices_of G2)) by GLIB_000:def 24;

      ( card ( rng (F _E ))) = ( card ( dom (F _E ))) by A1, CARD_1: 70

      .= ( card ( the_Edges_of G1)) by A1, Def11

      .= (G2 .size() ) by A2, GLIB_000:def 25

      .= ( card ( the_Edges_of G2)) by GLIB_000:def 25;

      then F is onto by A3, CARD_2: 102;

      hence thesis by A1;

    end;

    theorem :: GLIB_010:52

    

     Th52: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 st F is strong_SG-embedding holds G2 is complete implies G1 is complete

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      assume

       A1: F is strong_SG-embedding;

      assume

       A2: G2 is complete;

      now

        let v,w be Vertex of G1;

        assume

         A3: v <> w;

        v in ( the_Vertices_of G1) & w in ( the_Vertices_of G1);

        then

         A4: v in ( dom (F _V )) & w in ( dom (F _V )) by A1, Def11;

        then ((F _V ) . v) in ( rng (F _V )) & ((F _V ) . w) in ( rng (F _V )) by FUNCT_1: 3;

        then

        reconsider v2 = ((F _V ) . v), w2 = ((F _V ) . w) as Vertex of G2;

        v2 <> w2 by A1, A3, A4, FUNCT_1:def 4;

        then

        consider e2 be object such that

         A5: e2 Joins (v2,w2,G2) by A2, CHORD:def 6, CHORD:def 3;

        consider e1 be object such that

         A6: e1 Joins (v,w,G1) & e1 in ( dom (F _E )) & ((F _E ) . e1) = e2 by A1, A4, A5, Def16;

        thus (v,w) are_adjacent by A6, CHORD:def 3;

      end;

      hence thesis by CHORD:def 6;

    end;

    definition

      let G1,G2 be _Graph;

      :: GLIB_010:def23

      attr G2 is G1 -isomorphic means

      : Def23: ex F be PGraphMapping of G1, G2 st F is isomorphism;

      :: GLIB_010:def24

      attr G2 is G1 -Disomorphic means

      : Def24: ex F be PGraphMapping of G1, G2 st F is Disomorphism;

    end

    registration

      let G be _Graph;

      cluster G -Disomorphic -> G -isomorphic for _Graph;

      coherence ;

    end

    registration

      let G be _Graph;

      cluster G -DisomorphicG -isomorphic for _Graph;

      existence

      proof

        take G;

        ( id G) is directed isomorphism;

        hence thesis;

      end;

    end

    theorem :: GLIB_010:53

    

     Th53: for G be _Graph holds G is G -DisomorphicG -isomorphic

    proof

      let G be _Graph;

      ( id G) is directed strong_SG-embedding isomorphism;

      hence thesis;

    end;

    registration

      let G1 be _Graph, G2 be G1 -isomorphic _Graph;

      cluster isomorphism strong_SG-embedding weak_SG-embedding total non empty one-to-one onto semi-continuous continuous for PGraphMapping of G1, G2;

      existence

      proof

        consider F be PGraphMapping of G1, G2 such that

         A1: F is isomorphism by Def23;

        take F;

        thus thesis by A1;

      end;

    end

    definition

      let G1 be _Graph, G2 be G1 -isomorphic _Graph;

      mode Isomorphism of G1,G2 is isomorphism PGraphMapping of G1, G2;

    end

    registration

      let G1 be _Graph, G2 be G1 -Disomorphic _Graph;

      cluster isomorphism strong_SG-embedding weak_SG-embedding total non empty one-to-one onto directed semi-Dcontinuous Dcontinuous for PGraphMapping of G1, G2;

      existence

      proof

        consider F be PGraphMapping of G1, G2 such that

         A1: F is Disomorphism by Def24;

        take F;

        thus thesis by A1;

      end;

    end

    definition

      let G1 be _Graph, G2 be G1 -Disomorphic _Graph;

      mode DIsomorphism of G1,G2 is Disomorphism PGraphMapping of G1, G2;

    end

    definition

      let G1,G2 be WGraph, F be PGraphMapping of G1, G2;

      :: GLIB_010:def25

      attr F is weight-preserving means (( the_Weight_of G2) * (F _E )) = (( the_Weight_of G1) | ( dom (F _E )));

    end

    definition

      let G1,G2 be EGraph, F be PGraphMapping of G1, G2;

      :: GLIB_010:def26

      attr F is elabel-preserving means (( the_ELabel_of G2) * (F _E )) = (( the_ELabel_of G1) | ( dom (F _E )));

    end

    definition

      let G1,G2 be VGraph, F be PGraphMapping of G1, G2;

      :: GLIB_010:def27

      attr F is vlabel-preserving means (( the_VLabel_of G2) * (F _V )) = (( the_VLabel_of G1) | ( dom (F _V )));

    end

    definition

      let G1,G2 be [Ordered] _Graph, F be PGraphMapping of G1, G2;

      :: GLIB_010:def28

      attr F is ordering-preserving means (( the_Ordering_of G2) * (F _V )) = (( the_Ordering_of G1) | ( dom (F _V )));

    end

    registration

      let G be WGraph;

      cluster ( id G) -> weight-preserving;

      coherence by RELAT_1: 65;

    end

    registration

      let G be EGraph;

      cluster ( id G) -> elabel-preserving;

      coherence by RELAT_1: 65;

    end

    registration

      let G be VGraph;

      cluster ( id G) -> vlabel-preserving;

      coherence by RELAT_1: 65;

    end

    registration

      let G be [Ordered] _Graph;

      cluster ( id G) -> ordering-preserving;

      coherence by RELAT_1: 65;

    end

    definition

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      :: GLIB_010:def29

      func dom F -> inducedSubgraph of G1, ( dom (F _V )), ( dom (F _E )) equals the plain inducedSubgraph of G1, ( dom (F _V )), ( dom (F _E ));

      coherence ;

      :: GLIB_010:def30

      func rng F -> inducedSubgraph of G2, ( rng (F _V )), ( rng (F _E )) equals the plain inducedSubgraph of G2, ( rng (F _V )), ( rng (F _E ));

      coherence ;

    end

    registration

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      cluster ( dom F) -> plain;

      coherence ;

      cluster ( rng F) -> plain;

      coherence ;

    end

    theorem :: GLIB_010:54

    

     Th54: for G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2 holds ( the_Vertices_of ( dom F)) = ( dom (F _V )) & ( the_Edges_of ( dom F)) = ( dom (F _E )) & ( the_Vertices_of ( rng F)) = ( rng (F _V )) & ( the_Edges_of ( rng F)) = ( rng (F _E ))

    proof

      let G1,G2 be _Graph;

      let F be non empty PGraphMapping of G1, G2;

      ( dom (F _E )) c= (G1 .edgesBetween ( dom (F _V ))) by Th7;

      hence ( the_Vertices_of ( dom F)) = ( dom (F _V )) & ( the_Edges_of ( dom F)) = ( dom (F _E )) by GLIB_000:def 37;

      ( rng (F _E )) c= (G2 .edgesBetween ( rng (F _V ))) by Th7;

      hence ( the_Vertices_of ( rng F)) = ( rng (F _V )) & ( the_Edges_of ( rng F)) = ( rng (F _E )) by GLIB_000:def 37;

    end;

    theorem :: GLIB_010:55

    

     Th55: for G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2 holds F is total iff ( dom F) == G1

    proof

      let G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2;

      hereby

        

         A1: G1 is Subgraph of G1 by GLIB_000: 40;

        assume

         A2: F is total;

        

         A3: ( the_Vertices_of ( dom F)) = ( the_Vertices_of G1) by A2, Th54;

        ( the_Edges_of ( dom F)) = ( the_Edges_of G1) by A2, Th54;

        hence ( dom F) == G1 by A1, A3, GLIB_000: 86;

      end;

      assume

       A4: ( dom F) == G1;

      

       A5: ( dom (F _V )) = ( the_Vertices_of ( dom F)) by Th54

      .= ( the_Vertices_of G1) by A4, GLIB_000:def 34;

      ( dom (F _E )) = ( the_Edges_of ( dom F)) by Th54

      .= ( the_Edges_of G1) by A4, GLIB_000:def 34;

      hence thesis by A5;

    end;

    theorem :: GLIB_010:56

    for G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2 holds F is onto iff ( rng F) == G2

    proof

      let G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2;

      hereby

        

         A1: G2 is Subgraph of G2 by GLIB_000: 40;

        assume

         A2: F is onto;

        

         A3: ( the_Vertices_of ( rng F)) = ( the_Vertices_of G2) by A2, Th54;

        ( the_Edges_of ( rng F)) = ( the_Edges_of G2) by A2, Th54;

        hence ( rng F) == G2 by A1, A3, GLIB_000: 86;

      end;

      assume

       A4: ( rng F) == G2;

      

       A5: ( rng (F _V )) = ( the_Vertices_of ( rng F)) by Th54

      .= ( the_Vertices_of G2) by A4, GLIB_000:def 34;

      ( rng (F _E )) = ( the_Edges_of ( rng F)) by Th54

      .= ( the_Edges_of G2) by A4, GLIB_000:def 34;

      hence thesis by A5;

    end;

    definition

      let G1,G2 be _Graph, H be Subgraph of G1, F be PGraphMapping of G1, G2;

      :: GLIB_010:def31

      func F | H -> PGraphMapping of H, G2 equals [((F _V ) | ( the_Vertices_of H)), ((F _E ) | ( the_Edges_of H))];

      coherence

      proof

        reconsider f = ((F _V ) | ( the_Vertices_of H)) as PartFunc of ( the_Vertices_of H), ( the_Vertices_of G2) by PARTFUN1: 10;

        reconsider g = ((F _E ) | ( the_Edges_of H)) as PartFunc of ( the_Edges_of H), ( the_Edges_of G2) by PARTFUN1: 10;

        now

          hereby

            let e be object;

            assume e in ( dom g);

            then

             A1: e in ( dom (F _E )) & e in ( the_Edges_of H) by RELAT_1: 57;

            then (( the_Source_of G1) . e) in ( dom (F _V )) & (( the_Target_of G1) . e) in ( dom (F _V )) by Th5;

            then

             A2: (( the_Source_of H) . e) in ( dom (F _V )) & (( the_Target_of H) . e) in ( dom (F _V )) by A1, GLIB_000:def 32;

            (( the_Source_of H) . e) in ( the_Vertices_of H) & (( the_Target_of H) . e) in ( the_Vertices_of H) by A1, FUNCT_2: 5;

            hence (( the_Source_of H) . e) in ( dom f) & (( the_Target_of H) . e) in ( dom f) by A2, RELAT_1: 57;

          end;

          let e,v,w be object;

          assume e in ( dom g) & v in ( dom f) & w in ( dom f);

          then

           A3: e in ( dom (F _E )) & e in ( the_Edges_of H) & v in ( dom (F _V )) & v in ( the_Vertices_of H) & w in ( dom (F _V )) & w in ( the_Vertices_of H) by RELAT_1: 57;

          then

           A4: (g . e) = ((F _E ) . e) & (f . v) = ((F _V ) . v) & (f . w) = ((F _V ) . w) by FUNCT_1: 49;

          assume

           A5: e Joins (v,w,H);

          v is set & w is set by TARSKI: 1;

          then e Joins (v,w,G1) by A5, GLIB_000: 72;

          hence (g . e) Joins ((f . v),(f . w),G2) by A3, A4, Th4;

        end;

        hence thesis by Th8;

      end;

    end

    theorem :: GLIB_010:57

    

     Th57: for G1,G2 be _Graph, H be Subgraph of G1 holds for F be PGraphMapping of G1, G2 holds (F is empty implies (F | H) is empty) & (F is total implies (F | H) is total) & (F is one-to-one implies (F | H) is one-to-one) & (F is weak_SG-embedding implies (F | H) is weak_SG-embedding) & (F is semi-continuous implies (F | H) is semi-continuous) & (F is non onto implies (F | H) is non onto) & (F is directed implies (F | H) is directed) & (F is semi-Dcontinuous implies (F | H) is semi-Dcontinuous)

    proof

      let G1,G2 be _Graph, H be Subgraph of G1, F be PGraphMapping of G1, G2;

      thus F is empty implies (F | H) is empty;

      thus

       A1: F is total implies (F | H) is total

      proof

        assume

         A2: F is total;

        

         A3: ( dom ((F | H) _V )) = (( dom (F _V )) /\ ( the_Vertices_of H)) by RELAT_1: 61

        .= ( the_Vertices_of H) by A2, XBOOLE_1: 28;

        ( dom ((F | H) _E )) = (( dom (F _E )) /\ ( the_Edges_of H)) by RELAT_1: 61

        .= ( the_Edges_of H) by A2, XBOOLE_1: 28;

        hence (F | H) is total by A3;

      end;

      thus F is one-to-one implies (F | H) is one-to-one by FUNCT_1: 52;

      hence F is weak_SG-embedding implies (F | H) is weak_SG-embedding by A1;

      thus F is semi-continuous implies (F | H) is semi-continuous

      proof

        assume

         A4: F is semi-continuous;

        reconsider f = ((F _V ) | ( the_Vertices_of H)) as PartFunc of ( the_Vertices_of H), ( the_Vertices_of G2) by PARTFUN1: 10;

        reconsider g = ((F _E ) | ( the_Edges_of H)) as PartFunc of ( the_Edges_of H), ( the_Edges_of G2) by PARTFUN1: 10;

        now

          let e,v,w be object;

          assume e in ( dom g) & v in ( dom f) & w in ( dom f);

          then

           A5: e in ( dom (F _E )) & e in ( the_Edges_of H) & v in ( dom (F _V )) & v in ( the_Vertices_of H) & w in ( dom (F _V )) & w in ( the_Vertices_of H) by RELAT_1: 57;

          then

           A6: (g . e) = ((F _E ) . e) & (f . v) = ((F _V ) . v) & (f . w) = ((F _V ) . w) by FUNCT_1: 49;

          assume (g . e) Joins ((f . v),(f . w),G2);

          then e Joins (v,w,G1) by A4, A5, A6;

          hence e Joins (v,w,H) by A5, GLIB_000: 73;

        end;

        hence thesis;

      end;

      (F | H) is onto implies F is onto

      proof

        assume (F | H) is onto;

        then ( the_Vertices_of G2) c= ( rng (F _V )) & ( the_Edges_of G2) c= ( rng (F _E )) by RELAT_1: 70;

        hence F is onto by XBOOLE_0:def 10;

      end;

      hence F is non onto implies (F | H) is non onto;

      thus F is directed implies (F | H) is directed

      proof

        assume

         A7: F is directed;

        let e,v,w be object;

        assume e in ( dom ((F | H) _E )) & v in ( dom ((F | H) _V )) & w in ( dom ((F | H) _V ));

        then

         A8: e in ( dom (F _E )) & e in ( the_Edges_of H) & v in ( dom (F _V )) & v in ( the_Vertices_of H) & w in ( dom (F _V )) & w in ( the_Vertices_of H) by RELAT_1: 57;

        then

         A9: (((F | H) _E ) . e) = ((F _E ) . e) & (((F | H) _V ) . v) = ((F _V ) . v) & (((F | H) _V ) . w) = ((F _V ) . w) by FUNCT_1: 49;

        assume

         A10: e DJoins (v,w,H);

        v is set & w is set by TARSKI: 1;

        then e DJoins (v,w,G1) by A10, GLIB_000: 72;

        hence (((F | H) _E ) . e) DJoins ((((F | H) _V ) . v),(((F | H) _V ) . w),G2) by A7, A8, A9;

      end;

      thus F is semi-Dcontinuous implies (F | H) is semi-Dcontinuous

      proof

        assume

         A11: F is semi-Dcontinuous;

        let e,v,w be object;

        assume e in ( dom ((F | H) _E )) & v in ( dom ((F | H) _V )) & w in ( dom ((F | H) _V ));

        then

         A12: e in ( dom (F _E )) & e in ( the_Edges_of H) & v in ( dom (F _V )) & v in ( the_Vertices_of H) & w in ( dom (F _V )) & w in ( the_Vertices_of H) by RELAT_1: 57;

        then

         A13: (((F | H) _E ) . e) = ((F _E ) . e) & (((F | H) _V ) . v) = ((F _V ) . v) & (((F | H) _V ) . w) = ((F _V ) . w) by FUNCT_1: 49;

        assume (((F | H) _E ) . e) DJoins ((((F | H) _V ) . v),(((F | H) _V ) . w),G2);

        then e DJoins (v,w,G1) by A11, A12, A13;

        hence e DJoins (v,w,H) by A12, GLIB_000: 73;

      end;

    end;

    theorem :: GLIB_010:58

    

     Th58: for G1,G2 be _Graph, V be set, H be inducedSubgraph of G1, V holds for F be PGraphMapping of G1, G2 holds (F is continuous implies (F | H) is continuous) & (F is strong_SG-embedding implies (F | H) is strong_SG-embedding) & (F is Dcontinuous implies (F | H) is Dcontinuous)

    proof

      let G1,G2 be _Graph, V be set, H be inducedSubgraph of G1, V;

      let F be PGraphMapping of G1, G2;

      reconsider f = ((F _V ) | ( the_Vertices_of H)) as PartFunc of ( the_Vertices_of H), ( the_Vertices_of G2) by PARTFUN1: 10;

      reconsider g = ((F _E ) | ( the_Edges_of H)) as PartFunc of ( the_Edges_of H), ( the_Edges_of G2) by PARTFUN1: 10;

      per cases ;

        suppose V is non empty Subset of ( the_Vertices_of G1);

        then

         A1: ( the_Vertices_of H) = V & ( the_Edges_of H) = (G1 .edgesBetween V) by GLIB_000:def 37;

        hereby

          assume

           A2: F is continuous;

          now

            let e9,v,w be object;

            assume

             A3: v in ( dom f) & w in ( dom f) & e9 Joins ((f . v),(f . w),G2);

            then

             A4: v in ( dom (F _V )) & v in ( the_Vertices_of H) & w in ( dom (F _V )) & w in ( the_Vertices_of H) & v is set & w is set by RELAT_1: 57;

            then (f . v) = ((F _V ) . v) & (f . w) = ((F _V ) . w) by FUNCT_1: 49;

            then

            consider e be object such that

             A5: e Joins (v,w,G1) & e in ( dom (F _E )) & ((F _E ) . e) = e9 by A2, A3, A4;

            take e;

            e in (G1 .edgesBetween V) by A1, A4, A5, GLIB_000: 32;

            then

             A6: e in ( the_Edges_of H) by A1;

            hence e Joins (v,w,H) by A4, A5, GLIB_000: 73;

            thus e in ( dom g) & (g . e) = e9 by A5, A6, RELAT_1: 57, FUNCT_1: 49;

          end;

          hence (F | H) is continuous;

        end;

        hence F is strong_SG-embedding implies (F | H) is strong_SG-embedding by Th57;

        hereby

          assume

           A7: F is Dcontinuous;

          now

            let e9,v,w be object;

            assume

             A8: v in ( dom f) & w in ( dom f) & e9 DJoins ((f . v),(f . w),G2);

            then

             A9: v in ( dom (F _V )) & v in ( the_Vertices_of H) & w in ( dom (F _V )) & w in ( the_Vertices_of H) & v is set & w is set by RELAT_1: 57;

            then (f . v) = ((F _V ) . v) & (f . w) = ((F _V ) . w) by FUNCT_1: 49;

            then

            consider e be object such that

             A10: e DJoins (v,w,G1) & e in ( dom (F _E )) & ((F _E ) . e) = e9 by A7, A8, A9;

            take e;

            e Joins (v,w,G1) by A10, GLIB_000: 16;

            then e in (G1 .edgesBetween V) by A1, A9, GLIB_000: 32;

            then

             A11: e in ( the_Edges_of H) by A1;

            hence e DJoins (v,w,H) by A9, A10, GLIB_000: 73;

            thus e in ( dom g) & (g . e) = e9 by A10, A11, RELAT_1: 57, FUNCT_1: 49;

          end;

          hence (F | H) is Dcontinuous;

        end;

      end;

        suppose not V is non empty Subset of ( the_Vertices_of G1);

        then

         A12: G1 == H by GLIB_000:def 37;

        then ( the_Vertices_of G1) = ( the_Vertices_of H) & ( the_Edges_of G1) = ( the_Edges_of H) by GLIB_000:def 34;

        then

         A13: f = (F _V ) & g = (F _E );

        hereby

          assume

           A14: F is continuous;

          now

            let e9,v,w be object;

            assume v in ( dom f) & w in ( dom f) & e9 Joins ((f . v),(f . w),G2);

            then

            consider e be object such that

             A15: e Joins (v,w,G1) & e in ( dom (F _E )) & ((F _E ) . e) = e9 by A13, A14;

            take e;

            thus e Joins (v,w,H) by A12, A15, GLIB_000: 88;

            thus e in ( dom g) & (g . e) = e9 by A13, A15;

          end;

          hence (F | H) is continuous;

        end;

        hence F is strong_SG-embedding implies (F | H) is strong_SG-embedding by Th57;

        hereby

          assume

           A16: F is Dcontinuous;

          now

            let e9,v,w be object;

            assume v in ( dom f) & w in ( dom f) & e9 DJoins ((f . v),(f . w),G2);

            then

            consider e be object such that

             A17: e DJoins (v,w,G1) & e in ( dom (F _E )) & ((F _E ) . e) = e9 by A13, A16;

            take e;

            thus e DJoins (v,w,H) by A12, A17, GLIB_000: 88;

            thus e in ( dom g) & (g . e) = e9 by A13, A17;

          end;

          hence (F | H) is Dcontinuous;

        end;

      end;

    end;

    registration

      let G1,G2 be _Graph, H be Subgraph of G1;

      let F be empty PGraphMapping of G1, G2;

      cluster (F | H) -> empty;

      coherence ;

    end

    registration

      let G1,G2 be _Graph, H be Subgraph of G1;

      let F be one-to-one PGraphMapping of G1, G2;

      cluster (F | H) -> one-to-one;

      coherence by Th57;

    end

    registration

      let G1,G2 be _Graph, H be Subgraph of G1;

      let F be semi-continuous PGraphMapping of G1, G2;

      cluster (F | H) -> semi-continuous;

      coherence by Th57;

    end

    registration

      let G1,G2 be _Graph, V be set, H be inducedSubgraph of G1, V;

      let F be continuous PGraphMapping of G1, G2;

      cluster (F | H) -> continuous;

      coherence by Th58;

    end

    registration

      let G1,G2 be _Graph, H be Subgraph of G1;

      let F be directed PGraphMapping of G1, G2;

      cluster (F | H) -> directed;

      coherence by Th57;

    end

    registration

      let G1,G2 be _Graph, H be Subgraph of G1;

      let F be semi-Dcontinuous PGraphMapping of G1, G2;

      cluster (F | H) -> semi-Dcontinuous;

      coherence by Th57;

    end

    registration

      let G1,G2 be _Graph, V be set, H be inducedSubgraph of G1, V;

      let F be Dcontinuous PGraphMapping of G1, G2;

      cluster (F | H) -> Dcontinuous;

      coherence by Th58;

    end

    registration

      let G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2;

      cluster (F | ( dom F)) -> total;

      coherence

      proof

        

        thus ( dom ((F | ( dom F)) _V )) = ( dom ((F _V ) | ( dom (F _V )))) by Th54

        .= ( the_Vertices_of ( dom F)) by Th54;

        

        thus ( dom ((F | ( dom F)) _E )) = ( dom ((F _E ) | ( dom (F _E )))) by Th54

        .= ( the_Edges_of ( dom F)) by Th54;

      end;

    end

    theorem :: GLIB_010:59

    

     Th59: for G1,G2 be _Graph, H be Subgraph of G1, F be PGraphMapping of G1, G2 holds ( dom ((F | H) _V )) = (( dom (F _V )) /\ ( the_Vertices_of H)) & ( dom ((F | H) _E )) = (( dom (F _E )) /\ ( the_Edges_of H)) by RELAT_1: 61;

    theorem :: GLIB_010:60

    for G1,G2 be WGraph, H be WSubgraph of G1, F be PGraphMapping of G1, G2 st F is weight-preserving holds (F | H) is weight-preserving

    proof

      let G1,G2 be WGraph, H be WSubgraph of G1;

      let F be PGraphMapping of G1, G2;

      assume

       A1: F is weight-preserving;

      (( the_Weight_of G2) * ((F | H) _E )) = ((( the_Weight_of G2) * (F _E )) | ( the_Edges_of H)) by RELAT_1: 83

      .= (( the_Weight_of G1) | (( dom (F _E )) /\ (( the_Edges_of H) /\ ( the_Edges_of H)))) by A1, RELAT_1: 71

      .= (( the_Weight_of G1) | (( the_Edges_of H) /\ (( dom (F _E )) /\ ( the_Edges_of H)))) by XBOOLE_1: 16

      .= (( the_Weight_of G1) | (( the_Edges_of H) /\ ( dom ((F | H) _E )))) by Th59

      .= ((( the_Weight_of G1) | ( the_Edges_of H)) | ( dom ((F | H) _E ))) by RELAT_1: 71

      .= (( the_Weight_of H) | ( dom ((F | H) _E ))) by GLIB_003:def 10;

      hence thesis;

    end;

    theorem :: GLIB_010:61

    for G1,G2 be EGraph, H be ESubgraph of G1, F be PGraphMapping of G1, G2 st F is elabel-preserving holds (F | H) is elabel-preserving

    proof

      let G1,G2 be EGraph, H be ESubgraph of G1;

      let F be PGraphMapping of G1, G2;

      assume

       A1: F is elabel-preserving;

      (( the_ELabel_of G2) * ((F | H) _E )) = ((( the_ELabel_of G2) * (F _E )) | ( the_Edges_of H)) by RELAT_1: 83

      .= (( the_ELabel_of G1) | (( dom (F _E )) /\ (( the_Edges_of H) /\ ( the_Edges_of H)))) by A1, RELAT_1: 71

      .= (( the_ELabel_of G1) | (( the_Edges_of H) /\ (( dom (F _E )) /\ ( the_Edges_of H)))) by XBOOLE_1: 16

      .= (( the_ELabel_of G1) | (( the_Edges_of H) /\ ( dom ((F | H) _E )))) by Th59

      .= ((( the_ELabel_of G1) | ( the_Edges_of H)) | ( dom ((F | H) _E ))) by RELAT_1: 71

      .= (( the_ELabel_of H) | ( dom ((F | H) _E ))) by GLIB_003:def 11;

      hence thesis;

    end;

    theorem :: GLIB_010:62

    for G1,G2 be VGraph, H be VSubgraph of G1, F be PGraphMapping of G1, G2 st F is vlabel-preserving holds (F | H) is vlabel-preserving

    proof

      let G1,G2 be VGraph, H be VSubgraph of G1;

      let F be PGraphMapping of G1, G2;

      assume

       A1: F is vlabel-preserving;

      (( the_VLabel_of G2) * ((F | H) _V )) = ((( the_VLabel_of G2) * (F _V )) | ( the_Vertices_of H)) by RELAT_1: 83

      .= (( the_VLabel_of G1) | (( dom (F _V )) /\ (( the_Vertices_of H) /\ ( the_Vertices_of H)))) by A1, RELAT_1: 71

      .= (( the_VLabel_of G1) | (( the_Vertices_of H) /\ (( dom (F _V )) /\ ( the_Vertices_of H)))) by XBOOLE_1: 16

      .= (( the_VLabel_of G1) | (( the_Vertices_of H) /\ ( dom ((F | H) _V )))) by Th59

      .= ((( the_VLabel_of G1) | ( the_Vertices_of H)) | ( dom ((F | H) _V ))) by RELAT_1: 71

      .= (( the_VLabel_of H) | ( dom ((F | H) _V ))) by GLIB_003:def 12;

      hence thesis;

    end;

    definition

      let G1,G2 be _Graph, H be Subgraph of G2, F be PGraphMapping of G1, G2;

      :: GLIB_010:def32

      func H |` F -> PGraphMapping of G1, H equals [(( the_Vertices_of H) |` (F _V )), (( the_Edges_of H) |` (F _E ))];

      coherence

      proof

        reconsider f = (( the_Vertices_of H) |` (F _V )) as PartFunc of ( the_Vertices_of G1), ( the_Vertices_of H) by PARTFUN1: 12;

        reconsider g = (( the_Edges_of H) |` (F _E )) as PartFunc of ( the_Edges_of G1), ( the_Edges_of H) by PARTFUN1: 12;

        now

          hereby

            let e be object;

            assume e in ( dom g);

            then

             A1: e in ( dom (F _E )) & ((F _E ) . e) in ( the_Edges_of H) by FUNCT_1: 54;

            

             A2: ((F _E ) . e) Joins ((( the_Source_of H) . ((F _E ) . e)),(( the_Target_of H) . ((F _E ) . e)),H) by A1, GLIB_000:def 13;

            then

             A3: ((F _E ) . e) Joins ((( the_Source_of H) . ((F _E ) . e)),(( the_Target_of H) . ((F _E ) . e)),G2) by GLIB_000: 72;

            

             A4: (( the_Source_of H) . ((F _E ) . e)) in ( the_Vertices_of H) & (( the_Target_of H) . ((F _E ) . e)) in ( the_Vertices_of H) by A2, GLIB_000: 13;

            

             A5: e Joins ((( the_Source_of G1) . e),(( the_Target_of G1) . e),G1) by A1, GLIB_000:def 13;

            

             A6: (( the_Source_of G1) . e) in ( dom (F _V )) & (( the_Target_of G1) . e) in ( dom (F _V )) by A1, Th5;

            then

             A7: ((F _E ) . e) Joins (((F _V ) . (( the_Source_of G1) . e)),((F _V ) . (( the_Target_of G1) . e)),G2) by A1, A5, Th4;

            ((F _V ) . (( the_Source_of G1) . e)) in ( the_Vertices_of H) & ((F _V ) . (( the_Target_of G1) . e)) in ( the_Vertices_of H)

            proof

              per cases by A3, A7, GLIB_000: 15;

                suppose ((F _V ) . (( the_Source_of G1) . e)) = (( the_Source_of H) . ((F _E ) . e)) & ((F _V ) . (( the_Target_of G1) . e)) = (( the_Target_of H) . ((F _E ) . e));

                hence thesis by A4;

              end;

                suppose ((F _V ) . (( the_Source_of G1) . e)) = (( the_Target_of H) . ((F _E ) . e)) & ((F _V ) . (( the_Target_of G1) . e)) = (( the_Source_of H) . ((F _E ) . e));

                hence thesis by A4;

              end;

            end;

            hence (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f) by A6, FUNCT_1: 54;

          end;

          let e,v,w be object;

          assume

           A8: e in ( dom g) & v in ( dom f) & w in ( dom f);

          then

           A9: e in ( dom (F _E )) & ((F _E ) . e) in ( the_Edges_of H) & v in ( dom (F _V )) & ((F _V ) . v) in ( the_Vertices_of H) & w in ( dom (F _V )) & ((F _V ) . w) in ( the_Vertices_of H) by FUNCT_1: 54;

          then e Joins (v,w,G1) implies ((F _E ) . e) Joins (((F _V ) . v),((F _V ) . w),G2) by Th4;

          then

           A10: e Joins (v,w,G1) implies ((F _E ) . e) Joins (((F _V ) . v),((F _V ) . w),H) by A9, GLIB_000: 73;

          (g . e) = ((F _E ) . e) & (f . v) = ((F _V ) . v) & (f . w) = ((F _V ) . w) by A8, FUNCT_1: 53;

          hence e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),H) by A10;

        end;

        hence thesis by Th8;

      end;

    end

    theorem :: GLIB_010:63

    

     Th63: for G1,G2 be _Graph, H be Subgraph of G2 holds for F be PGraphMapping of G1, G2 holds (F is empty implies (H |` F) is empty) & (F is one-to-one implies (H |` F) is one-to-one) & (F is onto implies (H |` F) is onto) & (F is non total implies (H |` F) is non total) & (F is directed implies (H |` F) is directed) & (F is semi-continuous implies (H |` F) is semi-continuous) & (F is continuous implies (H |` F) is continuous) & (F is semi-Dcontinuous implies (H |` F) is semi-Dcontinuous) & (F is Dcontinuous implies (H |` F) is Dcontinuous)

    proof

      let G1,G2 be _Graph, H be Subgraph of G2;

      let F be PGraphMapping of G1, G2;

      reconsider f = (( the_Vertices_of H) |` (F _V )) as PartFunc of ( the_Vertices_of G1), ( the_Vertices_of H) by PARTFUN1: 12;

      reconsider g = (( the_Edges_of H) |` (F _E )) as PartFunc of ( the_Edges_of G1), ( the_Edges_of H) by PARTFUN1: 12;

      hereby

        assume F is empty;

        then (F _V ) is empty;

        hence (H |` F) is empty by RELAT_1: 86, XBOOLE_1: 3;

      end;

      thus F is one-to-one implies (H |` F) is one-to-one by FUNCT_1: 58;

      thus F is onto implies (H |` F) is onto

      proof

        assume

         A1: F is onto;

        

        thus ( rng ((H |` F) _V )) = (( rng (F _V )) /\ ( the_Vertices_of H)) by RELAT_1: 88

        .= ( the_Vertices_of H) by A1, XBOOLE_1: 28;

        

        thus ( rng ((H |` F) _E )) = (( rng (F _E )) /\ ( the_Edges_of H)) by RELAT_1: 88

        .= ( the_Edges_of H) by A1, XBOOLE_1: 28;

      end;

      now

        assume

         A2: (H |` F) is total;

        ( dom ((H |` F) _V )) c= ( dom (F _V )) by RELAT_1: 186;

        hence ( dom (F _V )) = ( the_Vertices_of G1) by A2, XBOOLE_0:def 10;

        ( dom ((H |` F) _E )) c= ( dom (F _E )) by RELAT_1: 186;

        hence ( dom (F _E )) = ( the_Edges_of G1) by A2, XBOOLE_0:def 10;

      end;

      hence F is non total implies (H |` F) is non total;

      thus F is directed implies (H |` F) is directed

      proof

        assume

         A3: F is directed;

        let e,v,w be object;

        assume

         A4: e in ( dom ((H |` F) _E )) & v in ( dom ((H |` F) _V )) & w in ( dom ((H |` F) _V ));

        then

         A5: e in ( dom (F _E )) & ((F _E ) . e) in ( the_Edges_of H) & v in ( dom (F _V )) & ((F _V ) . v) in ( the_Vertices_of H) & w in ( dom (F _V )) & ((F _V ) . w) in ( the_Vertices_of H) by FUNCT_1: 54;

        then e DJoins (v,w,G1) implies ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),G2) by A3;

        then

         A6: e DJoins (v,w,G1) implies ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),H) by A5, GLIB_000: 73;

        (((H |` F) _E ) . e) = ((F _E ) . e) & (((H |` F) _V ) . v) = ((F _V ) . v) & (((H |` F) _V ) . w) = ((F _V ) . w) by A4, FUNCT_1: 53;

        hence e DJoins (v,w,G1) implies (((H |` F) _E ) . e) DJoins ((((H |` F) _V ) . v),(((H |` F) _V ) . w),H) by A6;

      end;

      thus F is semi-continuous implies (H |` F) is semi-continuous

      proof

        assume

         A7: F is semi-continuous;

        reconsider f = (( the_Vertices_of H) |` (F _V )) as PartFunc of ( the_Vertices_of G1), ( the_Vertices_of H) by PARTFUN1: 12;

        reconsider g = (( the_Edges_of H) |` (F _E )) as PartFunc of ( the_Edges_of G1), ( the_Edges_of H) by PARTFUN1: 12;

        let e,v,w be object;

        assume

         A8: e in ( dom ((H |` F) _E )) & v in ( dom ((H |` F) _V )) & w in ( dom ((H |` F) _V ));

        then e in ( dom (F _E )) & ((F _E ) . e) in ( the_Edges_of H) & v in ( dom (F _V )) & ((F _V ) . v) in ( the_Vertices_of H) & w in ( dom (F _V )) & ((F _V ) . w) in ( the_Vertices_of H) by FUNCT_1: 54;

        then ((F _E ) . e) Joins (((F _V ) . v),((F _V ) . w),G2) implies e Joins (v,w,G1) by A7;

        then

         A9: ((F _E ) . e) Joins (((F _V ) . v),((F _V ) . w),H) implies e Joins (v,w,G1) by GLIB_000: 72;

        (g . e) = ((F _E ) . e) & (f . v) = ((F _V ) . v) & (f . w) = ((F _V ) . w) by A8, FUNCT_1: 53;

        hence thesis by A9;

      end;

      thus F is continuous implies (H |` F) is continuous

      proof

        assume

         A10: F is continuous;

        now

          let e9,v,w be object;

          set f = (( the_Vertices_of H) |` (F _V ));

          assume

           A11: v in ( dom ((H |` F) _V )) & w in ( dom ((H |` F) _V )) & e9 Joins ((((H |` F) _V ) . v),(((H |` F) _V ) . w),H);

          then

           A12: v in ( dom f) & w in ( dom f) & e9 Joins ((f . v),(f . w),H);

          then

           A13: (f . v) = ((F _V ) . v) & (f . w) = ((F _V ) . w) by FUNCT_1: 55;

          

           A14: v in ( dom (F _V )) & ((F _V ) . v) in ( the_Vertices_of H) & w in ( dom (F _V )) & ((F _V ) . w) in ( the_Vertices_of H) & v is set & w is set by A11, FUNCT_1: 54;

          e9 Joins (((F _V ) . v),((F _V ) . w),G2) by A12, A13, GLIB_000: 72;

          then

          consider e be object such that

           A15: e Joins (v,w,G1) & e in ( dom (F _E )) & ((F _E ) . e) = e9 by A10, A14;

          take e;

          thus e Joins (v,w,G1) by A15;

          e9 in ( the_Edges_of H) by A11, GLIB_000:def 13;

          then e in ( dom (( the_Edges_of H) |` (F _E ))) by A15, FUNCT_1: 54;

          hence e in ( dom ((H |` F) _E )) & (((H |` F) _E ) . e) = e9 by A15, FUNCT_1: 55;

        end;

        hence thesis;

      end;

      thus F is semi-Dcontinuous implies (H |` F) is semi-Dcontinuous

      proof

        assume

         A16: F is semi-Dcontinuous;

        let e,v,w be object;

        assume

         A17: e in ( dom ((H |` F) _E )) & v in ( dom ((H |` F) _V )) & w in ( dom ((H |` F) _V ));

        then e in ( dom (F _E )) & ((F _E ) . e) in ( the_Edges_of H) & v in ( dom (F _V )) & ((F _V ) . v) in ( the_Vertices_of H) & w in ( dom (F _V )) & ((F _V ) . w) in ( the_Vertices_of H) by FUNCT_1: 54;

        then

         A18: ((F _E ) . e) DJoins (((F _V ) . v),((F _V ) . w),H) implies e DJoins (v,w,G1) by A16, GLIB_000: 72;

        (((H |` F) _E ) . e) = ((F _E ) . e) & (((H |` F) _V ) . v) = ((F _V ) . v) & (((H |` F) _V ) . w) = ((F _V ) . w) by A17, FUNCT_1: 53;

        hence (((H |` F) _E ) . e) DJoins ((((H |` F) _V ) . v),(((H |` F) _V ) . w),H) implies e DJoins (v,w,G1) by A18;

      end;

      thus F is Dcontinuous implies (H |` F) is Dcontinuous

      proof

        assume

         A19: F is Dcontinuous;

        now

          let e9,v,w be object;

          set f = (( the_Vertices_of H) |` (F _V ));

          assume

           A20: v in ( dom ((H |` F) _V )) & w in ( dom ((H |` F) _V )) & e9 DJoins ((((H |` F) _V ) . v),(((H |` F) _V ) . w),H);

          then

           A21: v in ( dom f) & w in ( dom f) & e9 DJoins ((f . v),(f . w),H);

          then

           A22: (f . v) = ((F _V ) . v) & (f . w) = ((F _V ) . w) by FUNCT_1: 55;

          

           A23: v in ( dom (F _V )) & ((F _V ) . v) in ( the_Vertices_of H) & w in ( dom (F _V )) & ((F _V ) . w) in ( the_Vertices_of H) & v is set & w is set by A20, FUNCT_1: 54;

          e9 DJoins (((F _V ) . v),((F _V ) . w),G2) by A21, A22, GLIB_000: 72;

          then

          consider e be object such that

           A24: e DJoins (v,w,G1) & e in ( dom (F _E )) & ((F _E ) . e) = e9 by A19, A23;

          take e;

          thus e DJoins (v,w,G1) by A24;

          e9 in ( the_Edges_of H) by A20, GLIB_000:def 14;

          then e in ( dom (( the_Edges_of H) |` (F _E ))) by A24, FUNCT_1: 54;

          hence e in ( dom ((H |` F) _E )) & (((H |` F) _E ) . e) = e9 by A24, FUNCT_1: 55;

        end;

        hence thesis;

      end;

    end;

    registration

      let G1,G2 be _Graph, H be Subgraph of G2;

      let F be empty PGraphMapping of G1, G2;

      cluster (H |` F) -> empty;

      coherence by Th63;

    end

    registration

      let G1,G2 be _Graph, H be Subgraph of G2;

      let F be one-to-one PGraphMapping of G1, G2;

      cluster (H |` F) -> one-to-one;

      coherence by Th63;

    end

    registration

      let G1,G2 be _Graph, H be Subgraph of G2;

      let F be semi-continuous PGraphMapping of G1, G2;

      cluster (H |` F) -> semi-continuous;

      coherence by Th63;

    end

    registration

      let G1,G2 be _Graph, H be Subgraph of G2;

      let F be continuous PGraphMapping of G1, G2;

      cluster (H |` F) -> continuous;

      coherence by Th63;

    end

    registration

      let G1,G2 be _Graph, H be Subgraph of G2;

      let F be directed PGraphMapping of G1, G2;

      cluster (H |` F) -> directed;

      coherence by Th63;

    end

    registration

      let G1,G2 be _Graph, H be Subgraph of G2;

      let F be semi-Dcontinuous PGraphMapping of G1, G2;

      cluster (H |` F) -> semi-Dcontinuous;

      coherence by Th63;

    end

    registration

      let G1,G2 be _Graph, H be Subgraph of G2;

      let F be Dcontinuous PGraphMapping of G1, G2;

      cluster (H |` F) -> Dcontinuous;

      coherence by Th63;

    end

    registration

      let G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2;

      cluster (( rng F) |` F) -> onto;

      coherence

      proof

        

        thus ( rng ((( rng F) |` F) _V )) = ( rng (( rng (F _V )) |` (F _V ))) by Th54

        .= ( the_Vertices_of ( rng F)) by Th54;

        

        thus ( rng ((( rng F) |` F) _E )) = ( rng (( rng (F _E )) |` (F _E ))) by Th54

        .= ( the_Edges_of ( rng F)) by Th54;

      end;

    end

    theorem :: GLIB_010:64

    for G1,G2 be _Graph, H be Subgraph of G2, F be PGraphMapping of G1, G2 holds ( rng ((H |` F) _V )) = (( rng (F _V )) /\ ( the_Vertices_of H)) & ( rng ((H |` F) _E )) = (( rng (F _E )) /\ ( the_Edges_of H)) by RELAT_1: 88;

    theorem :: GLIB_010:65

    for G1,G2 be WGraph, H be WSubgraph of G2, F be PGraphMapping of G1, G2 st F is weight-preserving holds (H |` F) is weight-preserving

    proof

      let G1,G2 be WGraph, H be WSubgraph of G2;

      let F be PGraphMapping of G1, G2;

      assume

       A1: F is weight-preserving;

      (( the_Edges_of H) |` (F _E )) c= (F _E ) by RELAT_1: 86;

      then

       A2: (( dom (( the_Edges_of H) |` (F _E ))) /\ ( dom (F _E ))) = ( dom ((H |` F) _E )) by XBOOLE_1: 28, RELAT_1: 11;

      (( the_Weight_of H) * ((H |` F) _E )) = ((( the_Weight_of G2) | ( the_Edges_of H)) * ((H |` F) _E )) by GLIB_003:def 10

      .= (( the_Weight_of G2) * (( the_Edges_of H) |` (( the_Edges_of H) |` (F _E )))) by GROUP_9: 121

      .= (( the_Weight_of G2) * ((F _E ) | ( dom (( the_Edges_of H) |` (F _E ))))) by GLIB_009: 4

      .= ((( the_Weight_of G1) | ( dom (F _E ))) | ( dom ((H |` F) _E ))) by A1, RELAT_1: 83

      .= (( the_Weight_of G1) | ( dom ((H |` F) _E ))) by A2, RELAT_1: 71;

      hence thesis;

    end;

    theorem :: GLIB_010:66

    for G1,G2 be EGraph, H be ESubgraph of G2, F be PGraphMapping of G1, G2 st F is elabel-preserving holds (H |` F) is elabel-preserving

    proof

      let G1,G2 be EGraph, H be ESubgraph of G2;

      let F be PGraphMapping of G1, G2;

      assume

       A1: F is elabel-preserving;

      (( the_Edges_of H) |` (F _E )) c= (F _E ) by RELAT_1: 86;

      then

       A2: (( dom (( the_Edges_of H) |` (F _E ))) /\ ( dom (F _E ))) = ( dom ((H |` F) _E )) by XBOOLE_1: 28, RELAT_1: 11;

      (( the_ELabel_of H) * ((H |` F) _E )) = ((( the_ELabel_of G2) | ( the_Edges_of H)) * ((H |` F) _E )) by GLIB_003:def 11

      .= (( the_ELabel_of G2) * (( the_Edges_of H) |` (( the_Edges_of H) |` (F _E )))) by GROUP_9: 121

      .= (( the_ELabel_of G2) * ((F _E ) | ( dom (( the_Edges_of H) |` (F _E ))))) by GLIB_009: 4

      .= ((( the_ELabel_of G1) | ( dom (F _E ))) | ( dom ((H |` F) _E ))) by A1, RELAT_1: 83

      .= (( the_ELabel_of G1) | ( dom ((H |` F) _E ))) by A2, RELAT_1: 71;

      hence thesis;

    end;

    theorem :: GLIB_010:67

    for G1,G2 be VGraph, H be VSubgraph of G2, F be PGraphMapping of G1, G2 st F is vlabel-preserving holds (H |` F) is vlabel-preserving

    proof

      let G1,G2 be VGraph, H be VSubgraph of G2;

      let F be PGraphMapping of G1, G2;

      assume

       A1: F is vlabel-preserving;

      (( the_Vertices_of H) |` (F _V )) c= (F _V ) by RELAT_1: 86;

      then

       A2: (( dom (( the_Vertices_of H) |` (F _V ))) /\ ( dom (F _V ))) = ( dom ((H |` F) _V )) by XBOOLE_1: 28, RELAT_1: 11;

      (( the_VLabel_of H) * ((H |` F) _V )) = ((( the_VLabel_of G2) | ( the_Vertices_of H)) * ((H |` F) _V )) by GLIB_003:def 12

      .= (( the_VLabel_of G2) * (( the_Vertices_of H) |` (( the_Vertices_of H) |` (F _V )))) by GROUP_9: 121

      .= (( the_VLabel_of G2) * ((F _V ) | ( dom (( the_Vertices_of H) |` (F _V ))))) by GLIB_009: 4

      .= ((( the_VLabel_of G1) | ( dom (F _V ))) | ( dom ((H |` F) _V ))) by A1, RELAT_1: 83

      .= (( the_VLabel_of G1) | ( dom ((H |` F) _V ))) by A2, RELAT_1: 71;

      hence thesis;

    end;

    theorem :: GLIB_010:68

    for G1,G2 be _Graph, F be PGraphMapping of G1, G2, H1 be Subgraph of G1, H2 be Subgraph of G2 holds ((H2 |` F) | H1) = (H2 |` (F | H1))

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      let H1 be Subgraph of G1, H2 be Subgraph of G2;

      

      thus ((H2 |` F) | H1) = [(( the_Vertices_of H2) |` ((F _V ) | ( the_Vertices_of H1))), ((( the_Edges_of H2) |` (F _E )) | ( the_Edges_of H1))] by RELAT_1: 109

      .= (H2 |` (F | H1)) by RELAT_1: 109;

    end;

    definition

      let G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2;

      :: GLIB_010:def33

      func F " -> PGraphMapping of G2, G1 equals [((F _V ) " ), ((F _E ) " )];

      coherence

      proof

        reconsider f = ((F _V ) " ) as PartFunc of ( the_Vertices_of G2), ( the_Vertices_of G1);

        reconsider g = ((F _E ) " ) as PartFunc of ( the_Edges_of G2), ( the_Edges_of G1);

        now

          hereby

            let e be object;

            assume e in ( dom g);

            then e in ( rng (F _E )) by FUNCT_1: 33;

            then (( the_Source_of G2) . e) in ( rng (F _V )) & (( the_Target_of G2) . e) in ( rng (F _V )) by Th6;

            hence (( the_Source_of G2) . e) in ( dom f) & (( the_Target_of G2) . e) in ( dom f) by FUNCT_1: 33;

          end;

          let e,v,w be object;

          assume e in ( dom g) & v in ( dom f) & w in ( dom f);

          then

           A1: e in ( rng (F _E )) & v in ( rng (F _V )) & w in ( rng (F _V )) by FUNCT_1: 33;

          then

          consider e0 be object such that

           A2: e0 in ( dom (F _E )) & ((F _E ) . e0) = e by FUNCT_1:def 3;

          consider v0 be object such that

           A3: v0 in ( dom (F _V )) & ((F _V ) . v0) = v by A1, FUNCT_1:def 3;

          consider w0 be object such that

           A4: w0 in ( dom (F _V )) & ((F _V ) . w0) = w by A1, FUNCT_1:def 3;

          

           A5: (g . e) = e0 & (f . v) = v0 & (f . w) = w0 by A2, A3, A4, FUNCT_1: 34;

          

           A6: F is semi-continuous;

          assume e Joins (v,w,G2);

          then ((F _E ) . e0) Joins (((F _V ) . v0),((F _V ) . w0),G2) by A2, A3, A4;

          hence (g . e) Joins ((f . v),(f . w),G1) by A2, A3, A4, A5, A6;

        end;

        hence thesis by Th8;

      end;

    end

    registration

      let G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2;

      cluster (F " ) -> one-to-one semi-continuous;

      coherence

      proof

        thus (F " ) is one-to-one;

        hence thesis;

      end;

    end

    registration

      let G1,G2 be _Graph, F be empty one-to-one PGraphMapping of G1, G2;

      cluster (F " ) -> empty;

      coherence

      proof

        reconsider f = (F _V ) as one-to-one Function;

        ( dom ((F " ) _V )) = ( rng f) by FUNCT_1: 33

        .= {} ;

        hence thesis;

      end;

    end

    registration

      let G1,G2 be _Graph, F be non empty one-to-one PGraphMapping of G1, G2;

      cluster (F " ) -> non empty;

      coherence

      proof

        reconsider f = (F _V ) as one-to-one Function;

        ( dom ((F " ) _V )) = ( rng f) by FUNCT_1: 33;

        hence thesis;

      end;

    end

    registration

      let G1,G2 be _Graph;

      let F be one-to-one semi-Dcontinuous PGraphMapping of G1, G2;

      cluster (F " ) -> semi-Dcontinuous;

      coherence

      proof

        reconsider f = (F _V ), g = (F _E ) as one-to-one Function;

        let e,v,w be object;

        assume e in ( dom ((F " ) _E )) & v in ( dom ((F " ) _V )) & w in ( dom ((F " ) _V ));

        then

         A1: e in ( rng g) & v in ( rng f) & w in ( rng f) by FUNCT_1: 33;

        then

        consider e0 be object such that

         A2: e0 in ( dom g) & (g . e0) = e by FUNCT_1:def 3;

        consider v0 be object such that

         A3: v0 in ( dom f) & (f . v0) = v by A1, FUNCT_1:def 3;

        consider w0 be object such that

         A4: w0 in ( dom f) & (f . w0) = w by A1, FUNCT_1:def 3;

        assume (((F " ) _E ) . e) DJoins ((((F " ) _V ) . v),(((F " ) _V ) . w),G1);

        then ((g " ) . (g . e0)) DJoins (((f " ) . (f . v0)),w0,G1) by A2, A3, A4, FUNCT_1: 34;

        then ((g " ) . (g . e0)) DJoins (v0,w0,G1) by A3, FUNCT_1: 34;

        then e0 DJoins (v0,w0,G1) by A2, FUNCT_1: 34;

        hence e DJoins (v,w,G2) by A2, A3, A4, Th16;

      end;

    end

    theorem :: GLIB_010:69

    for G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2 holds ((F " ) _V ) = ((F _V ) " ) & ((F " ) _E ) = ((F _E ) " );

    theorem :: GLIB_010:70

    

     Th70: for G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2 holds ((F " ) " ) = F

    proof

      let G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2;

      

      thus ((F " ) " ) = [(F _V ), (((F _E ) " ) " )] by FUNCT_1: 43

      .= [(F _V ), (F _E )] by FUNCT_1: 43

      .= F;

    end;

    theorem :: GLIB_010:71

    

     Th71: for G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2 holds F is total iff (F " ) is onto by FUNCT_1: 33;

    theorem :: GLIB_010:72

    

     Th72: for G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2 holds F is onto iff (F " ) is total by FUNCT_1: 33;

    theorem :: GLIB_010:73

    for G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2 st F is total continuous holds (F " ) is continuous

    proof

      let G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2;

      assume F is total continuous;

      then (F " ) is onto by FUNCT_1: 33;

      hence (F " ) is continuous;

    end;

    theorem :: GLIB_010:74

    

     Th74: for G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2 st F is total Dcontinuous holds (F " ) is Dcontinuous

    proof

      let G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2;

      assume

       A1: F is total Dcontinuous;

      then (F " ) is onto by FUNCT_1: 33;

      hence (F " ) is Dcontinuous by A1;

    end;

    theorem :: GLIB_010:75

    

     Th75: for G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2 holds F is isomorphism iff (F " ) is isomorphism by Th71, Th72;

    theorem :: GLIB_010:76

    for G1,G2 be WGraph, F be one-to-one PGraphMapping of G1, G2 holds F is weight-preserving iff (F " ) is weight-preserving

    proof

      let G1,G2 be WGraph, F be one-to-one PGraphMapping of G1, G2;

      thus F is weight-preserving implies (F " ) is weight-preserving by Th2;

      (F " ) is weight-preserving implies ((F " ) " ) is weight-preserving by Th2;

      hence thesis by Th70;

    end;

    theorem :: GLIB_010:77

    for G1,G2 be EGraph, F be one-to-one PGraphMapping of G1, G2 holds F is elabel-preserving iff (F " ) is elabel-preserving

    proof

      let G1,G2 be EGraph, F be one-to-one PGraphMapping of G1, G2;

      thus F is elabel-preserving implies (F " ) is elabel-preserving by Th2;

      (F " ) is elabel-preserving implies ((F " ) " ) is elabel-preserving by Th2;

      hence thesis by Th70;

    end;

    theorem :: GLIB_010:78

    for G1,G2 be VGraph, F be one-to-one PGraphMapping of G1, G2 holds F is vlabel-preserving iff (F " ) is vlabel-preserving

    proof

      let G1,G2 be VGraph, F be one-to-one PGraphMapping of G1, G2;

      thus F is vlabel-preserving implies (F " ) is vlabel-preserving by Th2;

      (F " ) is vlabel-preserving implies ((F " ) " ) is vlabel-preserving by Th2;

      hence thesis by Th70;

    end;

    theorem :: GLIB_010:79

    

     Th79: for G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2 st F is onto holds for v be Vertex of G2 holds (((F " ) _V ) . v) is Vertex of G1 by Th34, Th72;

    theorem :: GLIB_010:80

    for G be _Graph holds (( id G) " ) = ( id G)

    proof

      let G be _Graph;

      

      thus (( id G) " ) = [( id ( the_Vertices_of G)), (( id ( the_Edges_of G)) " )] by FUNCT_1: 45

      .= ( id G) by FUNCT_1: 45;

    end;

    theorem :: GLIB_010:81

    

     Th81: for G1,G2 be _Graph, F be non empty one-to-one PGraphMapping of G1, G2 holds ( dom F) = ( rng (F " )) & ( rng F) = ( dom (F " ))

    proof

      let G1,G2 be _Graph, F be non empty one-to-one PGraphMapping of G1, G2;

      

       A1: ( the_Vertices_of ( dom F)) = ( dom (F _V )) by Th54

      .= ( rng ((F _V ) " )) by FUNCT_1: 33

      .= ( the_Vertices_of ( rng (F " ))) by Th54;

      ( the_Edges_of ( dom F)) = ( dom (F _E )) by Th54

      .= ( rng ((F _E ) " )) by FUNCT_1: 33

      .= ( the_Edges_of ( rng (F " ))) by Th54;

      hence ( dom F) = ( rng (F " )) by A1, GLIB_000: 86, GLIB_009: 44;

      

       A2: ( the_Vertices_of ( rng F)) = ( rng (F _V )) by Th54

      .= ( dom ((F _V ) " )) by FUNCT_1: 33

      .= ( the_Vertices_of ( dom (F " ))) by Th54;

      ( the_Edges_of ( rng F)) = ( rng (F _E )) by Th54

      .= ( dom ((F _E ) " )) by FUNCT_1: 33

      .= ( the_Edges_of ( dom (F " ))) by Th54;

      hence ( rng F) = ( dom (F " )) by A2, GLIB_000: 86, GLIB_009: 44;

    end;

    theorem :: GLIB_010:82

    

     Th82: for G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2, H be Subgraph of G1 holds ((F | H) " ) = (H |` (F " ))

    proof

      let G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2;

      let H be Subgraph of G1;

      reconsider f = (F _V ), g = (F _E ) as one-to-one Function;

      

      thus ((F | H) " ) = [(( the_Vertices_of H) |` (f " )), ((g | ( the_Edges_of H)) " )] by GLIB_009: 5

      .= (H |` (F " )) by GLIB_009: 5;

    end;

    theorem :: GLIB_010:83

    for G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2, H be Subgraph of G2 holds ((H |` F) " ) = ((F " ) | H)

    proof

      let G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2;

      let H be Subgraph of G2;

      (((F " ) | H) " ) = (H |` ((F " ) " )) by Th82;

      then ((((F " ) | H) " ) " ) = ((H |` F) " ) by Th70;

      hence thesis by Th70;

    end;

    theorem :: GLIB_010:84

    

     Th84: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 st F is isomorphism holds (G1 .order() ) = (G2 .order() ) & (G1 .size() ) = (G2 .size() )

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      assume

       A1: F is isomorphism;

      then

      reconsider F as one-to-one PGraphMapping of G1, G2;

      

       A2: (G1 .order() ) c= (G2 .order() ) & (G1 .size() ) c= (G2 .size() ) by A1, Th45;

      (F " ) is isomorphism by A1, Th75;

      then (G2 .order() ) c= (G1 .order() ) & (G2 .size() ) c= (G1 .size() ) by Th45;

      hence thesis by A2, XBOOLE_0:def 10;

    end;

    theorem :: GLIB_010:85

    for G1,G2 be _finite _Graph, F be PGraphMapping of G1, G2 st F is strong_SG-embedding holds (ex F0 be PGraphMapping of G1, G2 st F0 is isomorphism) implies F is isomorphism

    proof

      let G1,G2 be _finite _Graph, F be PGraphMapping of G1, G2;

      assume

       A1: F is strong_SG-embedding;

      given F0 be PGraphMapping of G1, G2 such that

       A2: F0 is isomorphism;

      (G1 .order() ) = (G2 .order() ) & (G1 .size() ) = (G2 .size() ) by A2, Th84;

      hence thesis by A1, Th51;

    end;

    theorem :: GLIB_010:86

    for G1,G2 be _Graph, F be PGraphMapping of G1, G2 holds for X,Y be Subset of ( the_Vertices_of G1) st F is isomorphism holds ( card (G1 .edgesBetween (X,Y))) = ( card (G2 .edgesBetween (((F _V ) .: X),((F _V ) .: Y))))

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      let X,Y be Subset of ( the_Vertices_of G1);

      assume

       A1: F is isomorphism;

      then

       A2: ( card (G1 .edgesBetween (X,Y))) c= ( card (G2 .edgesBetween (((F _V ) .: X),((F _V ) .: Y)))) by Th46;

      reconsider F0 = F as one-to-one PGraphMapping of G1, G2 by A1;

      (F0 " ) is isomorphism by A1, Th75;

      then

       A3: ( card (G2 .edgesBetween (((F _V ) .: X),((F _V ) .: Y)))) c= ( card (G1 .edgesBetween ((((F0 " ) _V ) .: ((F _V ) .: X)),(((F0 " ) _V ) .: ((F _V ) .: Y))))) by Th46;

      

       A4: ( dom (F _V )) = ( the_Vertices_of G1) by A1, Def11;

      

       A5: (((F0 " ) _V ) .: ((F _V ) .: X)) = ((F _V ) " ((F _V ) .: X)) by FUNCT_1: 85

      .= X by A1, A4, FUNCT_1: 94;

      (((F0 " ) _V ) .: ((F _V ) .: Y)) = ((F _V ) " ((F _V ) .: Y)) by FUNCT_1: 85

      .= Y by A1, A4, FUNCT_1: 94;

      hence thesis by A2, A3, A5, XBOOLE_0:def 10;

    end;

    theorem :: GLIB_010:87

    for G1,G2 be _Graph, F be PGraphMapping of G1, G2 holds for X be Subset of ( the_Vertices_of G1) st F is isomorphism holds ( card (G1 .edgesBetween X)) = ( card (G2 .edgesBetween ((F _V ) .: X)))

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      let X be Subset of ( the_Vertices_of G1);

      assume

       A1: F is isomorphism;

      then

       A2: ( card (G1 .edgesBetween X)) c= ( card (G2 .edgesBetween ((F _V ) .: X))) by Th47;

      reconsider F0 = F as one-to-one PGraphMapping of G1, G2 by A1;

      (F0 " ) is isomorphism by A1, Th75;

      then

       A3: ( card (G2 .edgesBetween ((F _V ) .: X))) c= ( card (G1 .edgesBetween (((F0 " ) _V ) .: ((F _V ) .: X)))) by Th47;

      

       A4: ( dom (F _V )) = ( the_Vertices_of G1) by A1, Def11;

      (((F0 " ) _V ) .: ((F _V ) .: X)) = ((F _V ) " ((F _V ) .: X)) by FUNCT_1: 85

      .= X by A1, A4, FUNCT_1: 94;

      hence thesis by A2, A3, XBOOLE_0:def 10;

    end;

    theorem :: GLIB_010:88

    for G1,G2 be _Graph, F be directed PGraphMapping of G1, G2 holds for X,Y be Subset of ( the_Vertices_of G1) st F is isomorphism holds ( card (G1 .edgesDBetween (X,Y))) = ( card (G2 .edgesDBetween (((F _V ) .: X),((F _V ) .: Y))))

    proof

      let G1,G2 be _Graph, F be directed PGraphMapping of G1, G2;

      let X,Y be Subset of ( the_Vertices_of G1);

      assume

       A1: F is isomorphism;

      then

       A2: ( card (G1 .edgesDBetween (X,Y))) c= ( card (G2 .edgesDBetween (((F _V ) .: X),((F _V ) .: Y)))) by Th48;

      reconsider F0 = F as one-to-one PGraphMapping of G1, G2 by A1;

      (F0 " ) is isomorphism by A1, Th75;

      then

       A3: ( card (G2 .edgesDBetween (((F _V ) .: X),((F _V ) .: Y)))) c= ( card (G1 .edgesDBetween ((((F0 " ) _V ) .: ((F _V ) .: X)),(((F0 " ) _V ) .: ((F _V ) .: Y))))) by Th48;

      

       A4: ( dom (F _V )) = ( the_Vertices_of G1) by A1, Def11;

      

       A5: (((F0 " ) _V ) .: ((F _V ) .: X)) = ((F _V ) " ((F _V ) .: X)) by FUNCT_1: 85

      .= X by A1, A4, FUNCT_1: 94;

      (((F0 " ) _V ) .: ((F _V ) .: Y)) = ((F _V ) " ((F _V ) .: Y)) by FUNCT_1: 85

      .= Y by A1, A4, FUNCT_1: 94;

      hence thesis by A2, A3, A5, XBOOLE_0:def 10;

    end;

    theorem :: GLIB_010:89

    for G1,G2 be _Graph, F be PGraphMapping of G1, G2 st F is isomorphism holds (G1 is _trivial iff G2 is _trivial) & (G1 is loopless iff G2 is loopless) & (G1 is edgeless iff G2 is edgeless) & (G1 is non-multi iff G2 is non-multi) & (G1 is simple iff G2 is simple) & (G1 is _finite iff G2 is _finite) & (G1 is complete iff G2 is complete)

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      assume

       A1: F is isomorphism;

      then

      reconsider F as one-to-one PGraphMapping of G1, G2;

      (F " ) is isomorphism by A1, Th75;

      hence thesis by A1, Th35, Th49, Th52;

    end;

    theorem :: GLIB_010:90

    for G1,G2 be _Graph, F be PGraphMapping of G1, G2 st F is Dcontinuous isomorphism holds (G1 is non-Dmulti iff G2 is non-Dmulti) & (G1 is Dsimple iff G2 is Dsimple)

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      assume

       A1: F is Dcontinuous isomorphism;

      then

      reconsider F0 = F as one-to-one PGraphMapping of G1, G2;

      (F0 " ) is Dcontinuous isomorphism by A1, Th74, Th75;

      hence thesis by A1, Th50;

    end;

    

     Lm4: for G1,G2 be _Graph, F be non empty one-to-one PGraphMapping of G1, G2 holds ( card (( dom F) .loops() )) c= ( card (( rng F) .loops() ))

    proof

      let G1,G2 be _Graph, F be non empty one-to-one PGraphMapping of G1, G2;

      now

        reconsider f = ((F _E ) | (( dom F) .loops() )) as Function;

        take f;

        thus f is one-to-one by FUNCT_1: 52;

        (( dom F) .loops() ) c= ( the_Edges_of ( dom F));

        then

         A1: (( dom F) .loops() ) c= ( dom (F _E )) by Th54;

        

        thus

         A2: ( dom f) = (( dom (F _E )) /\ (( dom F) .loops() )) by RELAT_1: 61

        .= (( dom F) .loops() ) by A1, XBOOLE_1: 28;

        now

          let y be object;

          assume y in ( rng f);

          then

          consider x be object such that

           A3: x in ( dom f) & (f . x) = y by FUNCT_1:def 3;

          consider v be object such that

           A4: x Joins (v,v,( dom F)) by A2, A3, GLIB_009:def 2;

          v in ( the_Vertices_of ( dom F)) by A4, GLIB_000: 13;

          then

           A5: v in ( dom (F _V )) by Th54;

          

           A6: x in ( dom (F _E )) by A3, RELAT_1: 57;

          x is set & v is set by TARSKI: 1;

          then x Joins (v,v,G1) by A4, GLIB_000: 72;

          then

           A7: ((F _E ) . x) Joins (((F _V ) . v),((F _V ) . v),G2) by A5, A6, Th4;

          ((F _E ) . x) in ( rng (F _E )) by A6, FUNCT_1: 3;

          then ((F _E ) . x) in ( the_Edges_of ( rng F)) by Th54;

          then ((F _E ) . x) Joins (((F _V ) . v),((F _V ) . v),( rng F)) by A7, GLIB_000: 73;

          then ((F _E ) . x) in (( rng F) .loops() ) by GLIB_009:def 2;

          hence y in (( rng F) .loops() ) by A3, FUNCT_1: 47;

        end;

        hence ( rng f) c= (( rng F) .loops() ) by TARSKI:def 3;

      end;

      hence thesis by CARD_1: 10;

    end;

    theorem :: GLIB_010:91

    for G1,G2 be _Graph, F be non empty one-to-one PGraphMapping of G1, G2 holds ( card (( dom F) .loops() )) = ( card (( rng F) .loops() ))

    proof

      let G1,G2 be _Graph, F be non empty one-to-one PGraphMapping of G1, G2;

      reconsider F2 = (F " ) as non empty one-to-one PGraphMapping of G2, G1;

      

       A1: ( card (( dom F) .loops() )) c= ( card (( rng F) .loops() )) & ( card (( dom F2) .loops() )) c= ( card (( rng F2) .loops() )) by Lm4;

      ( dom F2) = ( rng F) & ( rng F2) = ( dom F) by Th81;

      hence thesis by A1, XBOOLE_0:def 10;

    end;

    theorem :: GLIB_010:92

    

     Th92: for G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2 st F is total holds ( card (G1 .loops() )) c= ( card (G2 .loops() ))

    proof

      let G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2;

      assume

       A1: F is total;

      then

      reconsider F as non empty one-to-one PGraphMapping of G1, G2;

      

       A2: (( dom F) .loops() ) = (G1 .loops() ) by A1, Th55, GLIB_009: 50;

      

       A3: ( card (( rng F) .loops() )) c= ( card (G2 .loops() )) by GLIB_009: 48, CARD_1: 11;

      ( card (( dom F) .loops() )) c= ( card (( rng F) .loops() )) by Lm4;

      hence thesis by A2, A3, XBOOLE_1: 1;

    end;

    theorem :: GLIB_010:93

    

     Th93: for G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2 st F is onto holds ( card (G2 .loops() )) c= ( card (G1 .loops() ))

    proof

      let G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2;

      reconsider F2 = (F " ) as one-to-one PGraphMapping of G2, G1;

      assume F is onto;

      then F2 is total by Th72;

      hence thesis by Th92;

    end;

    theorem :: GLIB_010:94

    for G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2 st F is isomorphism holds ( card (G1 .loops() )) = ( card (G2 .loops() ))

    proof

      let G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2;

      assume F is isomorphism;

      then ( card (G1 .loops() )) c= ( card (G2 .loops() )) & ( card (G2 .loops() )) c= ( card (G1 .loops() )) by Th92, Th93;

      hence thesis by XBOOLE_0:def 10;

    end;

    theorem :: GLIB_010:95

    for G1 be _Graph, G2 be G1 -isomorphic _Graph holds G1 is G2 -isomorphic

    proof

      let G1 be _Graph, G2 be G1 -isomorphic _Graph;

      consider F be PGraphMapping of G1, G2 such that

       A1: F is isomorphism by Def23;

      reconsider F as one-to-one PGraphMapping of G1, G2 by A1;

      take (F " );

      thus thesis by A1, Th75;

    end;

    theorem :: GLIB_010:96

    for G1 be _Graph, G2 be G1 -Disomorphic _Graph holds G1 is G2 -Disomorphic

    proof

      let G1 be _Graph, G2 be G1 -Disomorphic _Graph;

      consider F be PGraphMapping of G1, G2 such that

       A1: F is Disomorphism by Def24;

      reconsider F as one-to-one Dcontinuous PGraphMapping of G1, G2 by A1;

      take (F " );

      thus thesis by A1, Th71, Th72;

    end;

    theorem :: GLIB_010:97

    

     Th97: for G1 be _Graph, G2 be G1 -isomorphic _Graph holds for G3 be G2 -isomorphic _Graph, F be Isomorphism of G1, G2 st (ex E be set st G3 is reverseEdgeDirections of G1, E) holds (F " ) is Isomorphism of G2, G3

    proof

      let G1 be _Graph, G2 be G1 -isomorphic _Graph;

      let G3 be G2 -isomorphic _Graph, F be Isomorphism of G1, G2;

      given E be set such that

       A1: G3 is reverseEdgeDirections of G1, E;

      G2 is reverseEdgeDirections of G2, {} by GLIB_009: 43;

      then

      reconsider F2 = (F " ) as PGraphMapping of G2, G3 by A1, Th10;

      

       A2: F2 is total

      proof

        

        thus ( dom (F2 _V )) = ( rng (F _V )) by FUNCT_1: 33

        .= ( the_Vertices_of G2) by Def12;

        

        thus ( dom (F2 _E )) = ( rng (F _E )) by FUNCT_1: 33

        .= ( the_Edges_of G2) by Def12;

      end;

      

       A3: F2 is onto

      proof

        

        thus ( rng (F2 _V )) = ( dom (F _V )) by FUNCT_1: 33

        .= ( the_Vertices_of G1) by Def11

        .= ( the_Vertices_of G3) by A1, GLIB_007: 4;

        

        thus ( rng (F2 _E )) = ( dom (F _E )) by FUNCT_1: 33

        .= ( the_Edges_of G1) by Def11

        .= ( the_Edges_of G3) by A1, GLIB_007: 4;

      end;

      F2 is one-to-one;

      hence thesis by A2, A3;

    end;

    theorem :: GLIB_010:98

    for G1 be _Graph, G2 be G1 -isomorphic _Graph holds for G3 be G2 -isomorphic _Graph, F be Isomorphism of G1, G2 st G1 == G3 holds (F " ) is Isomorphism of G2, G3

    proof

      let G1 be _Graph, G2 be G1 -isomorphic _Graph;

      let G3 be G2 -isomorphic _Graph, F be Isomorphism of G1, G2;

      assume

       A1: G1 == G3;

      G1 is reverseEdgeDirections of G1, {} by GLIB_009: 43;

      then G3 is reverseEdgeDirections of G1, {} by A1, GLIB_007: 2;

      hence thesis by Th97;

    end;

    theorem :: GLIB_010:99

    for G1 be _Graph, G2 be G1 -Disomorphic _Graph holds for G3 be G2 -Disomorphic _Graph, F be DIsomorphism of G1, G2 st G1 == G3 holds (F " ) is DIsomorphism of G2, G3

    proof

      let G1 be _Graph, G2 be G1 -Disomorphic _Graph;

      let G3 be G2 -Disomorphic _Graph, F be DIsomorphism of G1, G2;

      assume

       A1: G1 == G3;

      then

      reconsider F2 = (F " ) as PGraphMapping of G2, G3 by Th9;

      

       A2: F2 is total

      proof

        

        thus ( dom (F2 _V )) = ( rng (F _V )) by FUNCT_1: 33

        .= ( the_Vertices_of G2) by Def12;

        

        thus ( dom (F2 _E )) = ( rng (F _E )) by FUNCT_1: 33

        .= ( the_Edges_of G2) by Def12;

      end;

      

       A3: F2 is onto

      proof

        

        thus ( rng (F2 _V )) = ( dom (F _V )) by FUNCT_1: 33

        .= ( the_Vertices_of G1) by Def11

        .= ( the_Vertices_of G3) by A1, GLIB_000:def 34;

        

        thus ( rng (F2 _E )) = ( dom (F _E )) by FUNCT_1: 33

        .= ( the_Edges_of G1) by Def11

        .= ( the_Edges_of G3) by A1, GLIB_000:def 34;

      end;

      

       A4: F2 is one-to-one;

      now

        let e,v,w be object;

        assume e in ( dom (F2 _E )) & v in ( dom (F2 _V )) & w in ( dom (F2 _V ));

        then

         A5: e in ( dom ((F " ) _E )) & v in ( dom ((F " ) _V )) & w in ( dom ((F " ) _V ));

        assume e DJoins (v,w,G2);

        then (((F " ) _E ) . e) DJoins ((((F " ) _V ) . v),(((F " ) _V ) . w),G1) by A5, Def14;

        hence (((F " ) _E ) . e) DJoins ((((F " ) _V ) . v),(((F " ) _V ) . w),G3) by A1, GLIB_000: 88;

      end;

      then F2 is directed;

      hence thesis by A2, A3, A4;

    end;

    definition

      let G1,G2,G3 be _Graph;

      let F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3;

      :: GLIB_010:def34

      func F2 * F1 -> PGraphMapping of G1, G3 equals [((F2 _V ) * (F1 _V )), ((F2 _E ) * (F1 _E ))];

      coherence

      proof

        reconsider f = ((F2 _V ) * (F1 _V )) as PartFunc of ( the_Vertices_of G1), ( the_Vertices_of G3);

        reconsider g = ((F2 _E ) * (F1 _E )) as PartFunc of ( the_Edges_of G1), ( the_Edges_of G3);

        now

          hereby

            let e be object;

            assume e in ( dom g);

            then

             A1: e in ( dom (F1 _E )) & ((F1 _E ) . e) in ( dom (F2 _E )) by FUNCT_1: 11;

            then

             A2: (( the_Source_of G1) . e) in ( dom (F1 _V )) & (( the_Target_of G1) . e) in ( dom (F1 _V )) by Th5;

            

             A3: (( the_Source_of G2) . ((F1 _E ) . e)) in ( dom (F2 _V )) & (( the_Target_of G2) . ((F1 _E ) . e)) in ( dom (F2 _V )) by A1, Th5;

            e Joins ((( the_Source_of G1) . e),(( the_Target_of G1) . e),G1) by A1, GLIB_000:def 13;

            then ((F1 _E ) . e) Joins (((F1 _V ) . (( the_Source_of G1) . e)),((F1 _V ) . (( the_Target_of G1) . e)),G2) by A1, A2, Th4;

            per cases by GLIB_000:def 13;

              suppose ((F1 _V ) . (( the_Source_of G1) . e)) = (( the_Source_of G2) . ((F1 _E ) . e)) & ((F1 _V ) . (( the_Target_of G1) . e)) = (( the_Target_of G2) . ((F1 _E ) . e));

              hence (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f) by A2, A3, FUNCT_1: 11;

            end;

              suppose ((F1 _V ) . (( the_Source_of G1) . e)) = (( the_Target_of G2) . ((F1 _E ) . e)) & ((F1 _V ) . (( the_Target_of G1) . e)) = (( the_Source_of G2) . ((F1 _E ) . e));

              hence (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f) by A2, A3, FUNCT_1: 11;

            end;

          end;

          let e,v,w be object;

          assume

           A4: e in ( dom g) & v in ( dom f) & w in ( dom f);

          then

           A5: e in ( dom (F1 _E )) & ((F1 _E ) . e) in ( dom (F2 _E )) by FUNCT_1: 11;

          

           A6: v in ( dom (F1 _V )) & ((F1 _V ) . v) in ( dom (F2 _V )) & w in ( dom (F1 _V )) & ((F1 _V ) . w) in ( dom (F2 _V )) by A4, FUNCT_1: 11;

          e Joins (v,w,G1) implies ((F1 _E ) . e) Joins (((F1 _V ) . v),((F1 _V ) . w),G2) by A5, A6, Th4;

          then

           A7: e Joins (v,w,G1) implies ((F2 _E ) . ((F1 _E ) . e)) Joins (((F2 _V ) . ((F1 _V ) . v)),((F2 _V ) . ((F1 _V ) . w)),G3) by A5, A6, Th4;

          ((F2 _V ) . ((F1 _V ) . v)) = (f . v) & ((F2 _V ) . ((F1 _V ) . w)) = (f . w) by A4, FUNCT_1: 12;

          hence e Joins (v,w,G1) implies (g . e) Joins ((f . v),(f . w),G3) by A4, A7, FUNCT_1: 12;

        end;

        hence thesis by Th8;

      end;

    end

    theorem :: GLIB_010:100

    for G1,G2,G3 be _Graph holds for F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3 holds ((F2 * F1) _V ) = ((F2 _V ) * (F1 _V )) & ((F2 * F1) _E ) = ((F2 _E ) * (F1 _E ));

    theorem :: GLIB_010:101

    for G1,G2,G3 be _Graph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3 st (F2 * F1) is onto holds F2 is onto

    proof

      let G1,G2,G3 be _Graph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3;

      assume (F2 * F1) is onto;

      then ( the_Vertices_of G3) c= ( rng (F2 _V )) & ( the_Edges_of G3) c= ( rng (F2 _E )) by RELAT_1: 26;

      hence thesis by XBOOLE_0:def 10;

    end;

    theorem :: GLIB_010:102

    for G1,G2,G3 be _Graph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3 st (F2 * F1) is total holds F1 is total

    proof

      let G1,G2,G3 be _Graph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3;

      assume (F2 * F1) is total;

      then ( the_Vertices_of G1) c= ( dom (F1 _V )) & ( the_Edges_of G1) c= ( dom (F1 _E )) by RELAT_1: 25;

      hence thesis by XBOOLE_0:def 10;

    end;

    registration

      let G1,G2,G3 be _Graph;

      let F1 be one-to-one PGraphMapping of G1, G2;

      let F2 be one-to-one PGraphMapping of G2, G3;

      cluster (F2 * F1) -> one-to-one;

      coherence ;

    end

    registration

      let G1,G2,G3 be _Graph;

      let F1 be semi-continuous PGraphMapping of G1, G2;

      let F2 be semi-continuous PGraphMapping of G2, G3;

      cluster (F2 * F1) -> semi-continuous;

      coherence

      proof

        set g = ((F2 _E ) * (F1 _E )), f = ((F2 _V ) * (F1 _V ));

        let e,v,w be object;

        assume

         A1: e in ( dom ((F2 * F1) _E )) & v in ( dom ((F2 * F1) _V )) & w in ( dom ((F2 * F1) _V ));

        then

         A2: e in ( dom (F1 _E )) & ((F1 _E ) . e) in ( dom (F2 _E )) by FUNCT_1: 11;

        

         A3: v in ( dom (F1 _V )) & ((F1 _V ) . v) in ( dom (F2 _V )) & w in ( dom (F1 _V )) & ((F1 _V ) . w) in ( dom (F2 _V )) by A1, FUNCT_1: 11;

        e Joins (v,w,G1) iff ((F1 _E ) . e) Joins (((F1 _V ) . v),((F1 _V ) . w),G2) by A2, A3, Th15;

        then

         A4: e Joins (v,w,G1) iff ((F2 _E ) . ((F1 _E ) . e)) Joins (((F2 _V ) . ((F1 _V ) . v)),((F2 _V ) . ((F1 _V ) . w)),G3) by A2, A3, Th15;

        ((F2 _V ) . ((F1 _V ) . v)) = (f . v) & ((F2 _V ) . ((F1 _V ) . w)) = (f . w) by A1, FUNCT_1: 12;

        hence thesis by A1, A4, FUNCT_1: 12;

      end;

    end

    registration

      let G1,G2,G3 be _Graph;

      let F1 be continuous PGraphMapping of G1, G2;

      let F2 be continuous PGraphMapping of G2, G3;

      cluster (F2 * F1) -> continuous;

      coherence

      proof

        let e9,v,w be object;

        assume

         A1: v in ( dom ((F2 * F1) _V )) & w in ( dom ((F2 * F1) _V )) & e9 Joins ((((F2 * F1) _V ) . v),(((F2 * F1) _V ) . w),G3);

        then

         A2: v in ( dom (F1 _V )) & ((F1 _V ) . v) in ( dom (F2 _V )) & w in ( dom (F1 _V )) & ((F1 _V ) . w) in ( dom (F2 _V )) by FUNCT_1: 11;

        then (((F2 * F1) _V ) . v) = ((F2 _V ) . ((F1 _V ) . v)) & (((F2 * F1) _V ) . w) = ((F2 _V ) . ((F1 _V ) . w)) by FUNCT_1: 13;

        then

        consider e8 be object such that

         A3: e8 Joins (((F1 _V ) . v),((F1 _V ) . w),G2) & e8 in ( dom (F2 _E )) & ((F2 _E ) . e8) = e9 by A1, A2, Def16;

        consider e be object such that

         A4: e Joins (v,w,G1) & e in ( dom (F1 _E )) & ((F1 _E ) . e) = e8 by A2, A3, Def16;

        take e;

        thus e Joins (v,w,G1) by A4;

        thus e in ( dom ((F2 * F1) _E )) by A3, A4, FUNCT_1: 11;

        hence (((F2 * F1) _E ) . e) = e9 by A3, A4, FUNCT_1: 12;

      end;

    end

    registration

      let G1,G2,G3 be _Graph;

      let F1 be directed PGraphMapping of G1, G2;

      let F2 be directed PGraphMapping of G2, G3;

      cluster (F2 * F1) -> directed;

      coherence

      proof

        set g = ((F2 _E ) * (F1 _E )), f = ((F2 _V ) * (F1 _V ));

        let e,v,w be object;

        assume

         A1: e in ( dom ((F2 * F1) _E )) & v in ( dom ((F2 * F1) _V )) & w in ( dom ((F2 * F1) _V ));

        then

         A2: e in ( dom (F1 _E )) & ((F1 _E ) . e) in ( dom (F2 _E )) by FUNCT_1: 11;

        

         A3: v in ( dom (F1 _V )) & ((F1 _V ) . v) in ( dom (F2 _V )) & w in ( dom (F1 _V )) & ((F1 _V ) . w) in ( dom (F2 _V )) by A1, FUNCT_1: 11;

        e DJoins (v,w,G1) implies ((F1 _E ) . e) DJoins (((F1 _V ) . v),((F1 _V ) . w),G2) by A2, A3, Def14;

        then

         A4: e DJoins (v,w,G1) implies ((F2 _E ) . ((F1 _E ) . e)) DJoins (((F2 _V ) . ((F1 _V ) . v)),((F2 _V ) . ((F1 _V ) . w)),G3) by A2, A3, Def14;

        ((F2 _V ) . ((F1 _V ) . v)) = (f . v) & ((F2 _V ) . ((F1 _V ) . w)) = (f . w) by A1, FUNCT_1: 12;

        hence thesis by A1, A4, FUNCT_1: 12;

      end;

    end

    registration

      let G1,G2,G3 be _Graph;

      let F1 be semi-Dcontinuous PGraphMapping of G1, G2;

      let F2 be semi-Dcontinuous PGraphMapping of G2, G3;

      cluster (F2 * F1) -> semi-Dcontinuous;

      coherence

      proof

        set g = ((F2 _E ) * (F1 _E )), f = ((F2 _V ) * (F1 _V ));

        let e,v,w be object;

        assume

         A1: e in ( dom ((F2 * F1) _E )) & v in ( dom ((F2 * F1) _V )) & w in ( dom ((F2 * F1) _V ));

        then

         A2: e in ( dom (F1 _E )) & ((F1 _E ) . e) in ( dom (F2 _E )) by FUNCT_1: 11;

        

         A3: v in ( dom (F1 _V )) & ((F1 _V ) . v) in ( dom (F2 _V )) & w in ( dom (F1 _V )) & ((F1 _V ) . w) in ( dom (F2 _V )) by A1, FUNCT_1: 11;

        e DJoins (v,w,G1) iff ((F1 _E ) . e) DJoins (((F1 _V ) . v),((F1 _V ) . w),G2) by A2, A3, Th16;

        then

         A4: e DJoins (v,w,G1) iff ((F2 _E ) . ((F1 _E ) . e)) DJoins (((F2 _V ) . ((F1 _V ) . v)),((F2 _V ) . ((F1 _V ) . w)),G3) by A2, A3, Th16;

        ((F2 _V ) . ((F1 _V ) . v)) = (f . v) & ((F2 _V ) . ((F1 _V ) . w)) = (f . w) by A1, FUNCT_1: 12;

        hence thesis by A1, A4, FUNCT_1: 12;

      end;

    end

    registration

      let G1,G2,G3 be _Graph;

      let F1 be Dcontinuous PGraphMapping of G1, G2;

      let F2 be Dcontinuous PGraphMapping of G2, G3;

      cluster (F2 * F1) -> Dcontinuous;

      coherence

      proof

        let e9,v,w be object;

        assume

         A1: v in ( dom ((F2 * F1) _V )) & w in ( dom ((F2 * F1) _V )) & e9 DJoins ((((F2 * F1) _V ) . v),(((F2 * F1) _V ) . w),G3);

        then

         A2: v in ( dom (F1 _V )) & ((F1 _V ) . v) in ( dom (F2 _V )) & w in ( dom (F1 _V )) & ((F1 _V ) . w) in ( dom (F2 _V )) by FUNCT_1: 11;

        then (((F2 * F1) _V ) . v) = ((F2 _V ) . ((F1 _V ) . v)) & (((F2 * F1) _V ) . w) = ((F2 _V ) . ((F1 _V ) . w)) by FUNCT_1: 13;

        then

        consider e8 be object such that

         A3: e8 DJoins (((F1 _V ) . v),((F1 _V ) . w),G2) & e8 in ( dom (F2 _E )) & ((F2 _E ) . e8) = e9 by A1, A2, Def18;

        consider e be object such that

         A4: e DJoins (v,w,G1) & e in ( dom (F1 _E )) & ((F1 _E ) . e) = e8 by A2, A3, Def18;

        take e;

        thus e DJoins (v,w,G1) by A4;

        thus e in ( dom ((F2 * F1) _E )) by A3, A4, FUNCT_1: 11;

        hence (((F2 * F1) _E ) . e) = e9 by A3, A4, FUNCT_1: 12;

      end;

    end

    registration

      let G1,G2,G3 be _Graph;

      let F1 be empty PGraphMapping of G1, G2;

      let F2 be PGraphMapping of G2, G3;

      cluster (F2 * F1) -> empty;

      coherence ;

    end

    registration

      let G1,G2,G3 be _Graph;

      let F1 be PGraphMapping of G1, G2;

      let F2 be empty PGraphMapping of G2, G3;

      cluster (F2 * F1) -> empty;

      coherence ;

    end

    theorem :: GLIB_010:103

    

     Th103: for G1,G2,G3 be _Graph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3 st F1 is total & ( rng (F1 _V )) c= ( dom (F2 _V )) & ( rng (F1 _E )) c= ( dom (F2 _E )) holds (F2 * F1) is total by RELAT_1: 27;

    theorem :: GLIB_010:104

    

     Th104: for G1,G2,G3 be _Graph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3 st F1 is total & F2 is total holds (F2 * F1) is total

    proof

      let G1,G2,G3 be _Graph;

      let F1 be PGraphMapping of G1, G2;

      let F2 be PGraphMapping of G2, G3;

      assume

       A1: F1 is total & F2 is total;

      then ( rng (F1 _V )) c= ( dom (F2 _V )) & ( rng (F1 _E )) c= ( dom (F2 _E ));

      hence thesis by A1, Th103;

    end;

    theorem :: GLIB_010:105

    

     Th105: for G1,G2,G3 be _Graph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3 st F2 is onto & ( dom (F2 _V )) c= ( rng (F1 _V )) & ( dom (F2 _E )) c= ( rng (F1 _E )) holds (F2 * F1) is onto by RELAT_1: 28;

    theorem :: GLIB_010:106

    

     Th106: for G1,G2,G3 be _Graph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3 st F1 is onto & F2 is onto holds (F2 * F1) is onto

    proof

      let G1,G2,G3 be _Graph;

      let F1 be PGraphMapping of G1, G2;

      let F2 be PGraphMapping of G2, G3;

      assume

       A1: F1 is onto & F2 is onto;

      then ( dom (F2 _V )) c= ( rng (F1 _V )) & ( dom (F2 _E )) c= ( rng (F1 _E ));

      hence thesis by A1, Th105;

    end;

    theorem :: GLIB_010:107

    for G1,G2,G3 be _Graph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3 st F1 is weak_SG-embedding & F2 is weak_SG-embedding holds (F2 * F1) is weak_SG-embedding by Th104;

    theorem :: GLIB_010:108

    for G1,G2,G3 be _Graph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3 st F1 is strong_SG-embedding & F2 is strong_SG-embedding holds (F2 * F1) is strong_SG-embedding by Th104;

    theorem :: GLIB_010:109

    

     Th109: for G1,G2,G3 be _Graph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3 st F1 is isomorphism & F2 is isomorphism holds (F2 * F1) is isomorphism by Th104, Th106;

    theorem :: GLIB_010:110

    

     Th110: for G1,G2,G3 be _Graph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3 st F1 is Disomorphism & F2 is Disomorphism holds (F2 * F1) is Disomorphism

    proof

      let G1,G2,G3 be _Graph;

      let F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3;

      assume F1 is Disomorphism & F2 is Disomorphism;

      then (F2 * F1) is directed isomorphism by Th109;

      hence thesis;

    end;

    theorem :: GLIB_010:111

    for G1,G2,G3 be WGraph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3 st F1 is weight-preserving & F2 is weight-preserving holds (F2 * F1) is weight-preserving

    proof

      let G1,G2,G3 be WGraph;

      let F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3;

      assume

       A1: F1 is weight-preserving & F2 is weight-preserving;

      

      thus (( the_Weight_of G3) * ((F2 * F1) _E )) = ((( the_Weight_of G3) * (F2 _E )) * (F1 _E )) by RELAT_1: 36

      .= (( the_Weight_of G1) | ( dom ((F2 * F1) _E ))) by A1, Th1;

    end;

    theorem :: GLIB_010:112

    for G1,G2,G3 be EGraph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3 st F1 is elabel-preserving & F2 is elabel-preserving holds (F2 * F1) is elabel-preserving

    proof

      let G1,G2,G3 be EGraph;

      let F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3;

      assume

       A1: F1 is elabel-preserving & F2 is elabel-preserving;

      

      thus (( the_ELabel_of G3) * ((F2 * F1) _E )) = ((( the_ELabel_of G3) * (F2 _E )) * (F1 _E )) by RELAT_1: 36

      .= (( the_ELabel_of G1) | ( dom ((F2 * F1) _E ))) by A1, Th1;

    end;

    theorem :: GLIB_010:113

    for G1,G2,G3 be VGraph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3 st F1 is vlabel-preserving & F2 is vlabel-preserving holds (F2 * F1) is vlabel-preserving

    proof

      let G1,G2,G3 be VGraph;

      let F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3;

      assume

       A1: F1 is vlabel-preserving & F2 is vlabel-preserving;

      

      thus (( the_VLabel_of G3) * ((F2 * F1) _V )) = ((( the_VLabel_of G3) * (F2 _V )) * (F1 _V )) by RELAT_1: 36

      .= (( the_VLabel_of G1) | ( dom ((F2 * F1) _V ))) by A1, Th1;

    end;

    theorem :: GLIB_010:114

    for G1,G2,G3,G4 be _Graph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3, F3 be PGraphMapping of G3, G4 holds (F3 * (F2 * F1)) = ((F3 * F2) * F1)

    proof

      let G1,G2,G3,G4 be _Graph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3, F3 be PGraphMapping of G3, G4;

      

      thus (F3 * (F2 * F1)) = [(((F3 _V ) * (F2 _V )) * (F1 _V )), ((F3 _E ) * ((F2 _E ) * (F1 _E )))] by RELAT_1: 36

      .= ((F3 * F2) * F1) by RELAT_1: 36;

    end;

    theorem :: GLIB_010:115

    for G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2 st F is isomorphism holds (F * (F " )) = ( id G2) & ((F " ) * F) = ( id G1)

    proof

      let G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2;

      assume

       A1: F is isomorphism;

      

      thus (F * (F " )) = [( id ( rng (F _V ))), ((F _E ) * ((F _E ) " ))] by FUNCT_1: 39

      .= [( id ( rng (F _V ))), ( id ( rng (F _E )))] by FUNCT_1: 39

      .= [( id ( the_Vertices_of G2)), ( id ( rng (F _E )))] by A1, Def12

      .= ( id G2) by A1, Def12;

      

      thus ((F " ) * F) = [( id ( dom (F _V ))), (((F _E ) " ) * (F _E ))] by FUNCT_1: 39

      .= [( id ( dom (F _V ))), ( id ( dom (F _E )))] by FUNCT_1: 39

      .= [( id ( the_Vertices_of G1)), ( id ( dom (F _E )))] by A1, Def11

      .= ( id G1) by A1, Def11;

    end;

    theorem :: GLIB_010:116

    for G1,G2 be _Graph, F be PGraphMapping of G1, G2 holds (F * ( id G1)) = F & (( id G2) * F) = F

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      

       A1: ( dom (F _V )) c= ( the_Vertices_of G1) & ( dom (F _E )) c= ( the_Edges_of G1);

      

      thus (F * ( id G1)) = [(F _V ), ((F _E ) * ( id ( the_Edges_of G1)))] by A1, RELAT_1: 51

      .= [(F _V ), (F _E )] by A1, RELAT_1: 51

      .= F;

      

       A2: ( rng (F _V )) c= ( the_Vertices_of G2) & ( rng (F _E )) c= ( the_Edges_of G2);

      

      thus (( id G2) * F) = [(F _V ), (( id ( the_Edges_of G2)) * (F _E ))] by A2, RELAT_1: 53

      .= [(F _V ), (F _E )] by A2, RELAT_1: 53

      .= F;

    end;

    theorem :: GLIB_010:117

    for G1,G2,G3 be _Graph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3, H be Subgraph of G1 holds (F2 * (F1 | H)) = ((F2 * F1) | H)

    proof

      let G1,G2,G3 be _Graph;

      let F1 be PGraphMapping of G1, G2;

      let F2 be PGraphMapping of G2, G3;

      let H be Subgraph of G1;

      

      thus (F2 * (F1 | H)) = [(((F2 _V ) * (F1 _V )) | ( the_Vertices_of H)), ((F2 _E ) * ((F1 _E ) | ( the_Edges_of H)))] by RELAT_1: 83

      .= ((F2 * F1) | H) by RELAT_1: 83;

    end;

    theorem :: GLIB_010:118

    for G1,G2,G3 be _Graph, F1 be PGraphMapping of G1, G2, F2 be PGraphMapping of G2, G3, H be Subgraph of G3 holds ((H |` F2) * F1) = (H |` (F2 * F1))

    proof

      let G1,G2,G3 be _Graph;

      let F1 be PGraphMapping of G1, G2;

      let F2 be PGraphMapping of G2, G3;

      let H be Subgraph of G3;

      

      thus ((H |` F2) * F1) = [(( the_Vertices_of H) |` ((F2 _V ) * (F1 _V ))), ((( the_Edges_of H) |` (F2 _E )) * (F1 _E ))] by RELAT_1: 108

      .= (H |` (F2 * F1)) by RELAT_1: 108;

    end;

    registration

      let G1 be _Graph, G2 be G1 -isomorphic _Graph;

      cluster G2 -isomorphic -> G1 -isomorphic for _Graph;

      coherence

      proof

        let G3 be _Graph;

        assume G3 is G2 -isomorphic;

        then

        consider F2 be PGraphMapping of G2, G3 such that

         A1: F2 is isomorphism;

        consider F1 be PGraphMapping of G1, G2 such that

         A2: F1 is isomorphism by Def23;

        take (F2 * F1);

        thus thesis by A1, A2, Th109;

      end;

    end

    registration

      let G1 be _Graph, G2 be G1 -Disomorphic _Graph;

      cluster G2 -Disomorphic -> G1 -Disomorphic for _Graph;

      coherence

      proof

        let G3 be _Graph;

        assume G3 is G2 -Disomorphic;

        then

        consider F2 be PGraphMapping of G2, G3 such that

         A1: F2 is Disomorphism;

        reconsider F2 as directed PGraphMapping of G2, G3 by A1;

        consider F1 be PGraphMapping of G1, G2 such that

         A2: F1 is Disomorphism by Def24;

        reconsider F1 as directed PGraphMapping of G1, G2 by A2;

        take (F2 * F1);

        thus thesis by A1, A2, Th110;

      end;

    end

    begin

    definition

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2, W1 be Walk of G1;

      :: GLIB_010:def35

      attr W1 is F -defined means

      : Def35: (W1 .vertices() ) c= ( dom (F _V )) & (W1 .edges() ) c= ( dom (F _E ));

    end

    definition

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2, W2 be Walk of G2;

      :: GLIB_010:def36

      attr W2 is F -valued means

      : Def36: (W2 .vertices() ) c= ( rng (F _V )) & (W2 .edges() ) c= ( rng (F _E ));

    end

    registration

      let G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2;

      cluster F -defined trivial for Walk of G1;

      existence

      proof

        set v = the Element of ( dom (F _V ));

        reconsider v as Vertex of G1;

        set W1 = (G1 .walkOf v);

        take W1;

        (W1 .vertices() ) = {v} by GLIB_001: 90;

        hence (W1 .vertices() ) c= ( dom (F _V )) by ZFMISC_1: 31;

        thus (W1 .edges() ) c= ( dom (F _E )) by XBOOLE_1: 2;

        thus thesis;

      end;

      cluster F -valued trivial for Walk of G2;

      existence

      proof

        set v = the Element of ( rng (F _V ));

        reconsider v as Vertex of G2;

        set W2 = (G2 .walkOf v);

        take W2;

        (W2 .vertices() ) = {v} by GLIB_001: 90;

        hence (W2 .vertices() ) c= ( rng (F _V )) by ZFMISC_1: 31;

        thus (W2 .edges() ) c= ( rng (F _E )) by XBOOLE_1: 2;

        thus thesis;

      end;

    end

    theorem :: GLIB_010:119

    for G1,G2 be _Graph, F be empty PGraphMapping of G1, G2, W1 be Walk of G1 holds W1 is non F -defined by XBOOLE_1: 3;

    theorem :: GLIB_010:120

    for G1,G2 be _Graph, F be empty PGraphMapping of G1, G2, W2 be Walk of G2 holds W2 is non F -valued by XBOOLE_1: 3;

    theorem :: GLIB_010:121

    

     Th121: for G1,G2 be _Graph, F be PGraphMapping of G1, G2, W1 be Walk of G1 st F is total holds W1 is F -defined;

    theorem :: GLIB_010:122

    

     Th122: for G1,G2 be _Graph, F be PGraphMapping of G1, G2, W2 be Walk of G2 st F is onto holds W2 is F -valued;

    registration

      let G1,G2 be _Graph, F be one-to-one PGraphMapping of G1, G2;

      cluster F -defined -> (F " ) -valued for Walk of G1;

      coherence by FUNCT_1: 33;

      cluster F -valued -> (F " ) -defined for Walk of G2;

      coherence by FUNCT_1: 33;

    end

    definition

      let G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2;

      let W1 be F -defined Walk of G1;

      :: GLIB_010:def37

      func F .: W1 -> Walk of G2 means

      : Def37: ((F _V ) * (W1 .vertexSeq() )) = (it .vertexSeq() ) & ((F _E ) * (W1 .edgeSeq() )) = (it .edgeSeq() );

      existence

      proof

        (W1 .vertices() ) c= ( dom (F _V )) by Def35;

        then

         A1: ( rng (W1 .vertexSeq() )) c= ( dom (F _V )) by GLIB_001:def 16;

        then

        reconsider p = ((F _V ) * (W1 .vertexSeq() )) as FinSequence by FINSEQ_1: 16;

        ( rng p) c= ( the_Vertices_of G2) by RELAT_1:def 19;

        then

        reconsider p as FinSequence of ( the_Vertices_of G2) by FINSEQ_1:def 4;

        (W1 .edges() ) c= ( dom (F _E )) by Def35;

        then

         A2: ( rng (W1 .edgeSeq() )) c= ( dom (F _E )) by GLIB_001:def 17;

        then

        reconsider q = ((F _E ) * (W1 .edgeSeq() )) as FinSequence by FINSEQ_1: 16;

        ( rng q) c= ( the_Edges_of G2) by RELAT_1:def 19;

        then

        reconsider q as FinSequence of ( the_Edges_of G2) by FINSEQ_1:def 4;

        

         A3: (2 * ( len p)) = (2 * ( len (W1 .vertexSeq() ))) by A1, FINSEQ_2: 29

        .= (( len W1) + 1) by GLIB_001:def 14

        .= (((2 * ( len (W1 .edgeSeq() ))) + 1) + 1) by GLIB_001:def 15

        .= (((2 * ( len q)) + 1) + 1) by A2, FINSEQ_2: 29

        .= (2 * (( len q) + 1));

        for n be Element of NAT st 1 <= n & (n + 1) <= ( len p) holds (q . n) Joins ((p . n),(p . (n + 1)),G2)

        proof

          let n be Element of NAT ;

          assume

           A4: 1 <= n & (n + 1) <= ( len p);

          then

           A5: n <= ( len q) by A3, XREAL_1: 6;

          (n + 0 ) <= (n + 1) by XREAL_1: 6;

          then

           A6: n <= ( len p) by A4, XXREAL_0: 2;

          then

           A7: n in ( dom p) by A4, FINSEQ_3: 25;

          

           A8: (1 + 0 ) <= (n + 1) by XREAL_1: 7;

          then

           A9: (n + 1) in ( dom p) by A4, FINSEQ_3: 25;

          n in ( dom q) by A4, A5, FINSEQ_3: 25;

          then

           A10: n in ( dom (W1 .vertexSeq() )) & ((W1 .vertexSeq() ) . n) in ( dom (F _V )) & (n + 1) in ( dom (W1 .vertexSeq() )) & ((W1 .vertexSeq() ) . (n + 1)) in ( dom (F _V )) & n in ( dom (W1 .edgeSeq() )) & ((W1 .edgeSeq() ) . n) in ( dom (F _E )) by A7, A9, FUNCT_1: 11;

          n <= ( len (W1 .edgeSeq() )) & n <= ( len (W1 .vertexSeq() )) & (n + 1) <= ( len (W1 .vertexSeq() )) by A1, A2, A4, A5, A6, FINSEQ_2: 29;

          then

           A11: ((W1 .edgeSeq() ) . n) = (W1 . (2 * n)) & ((W1 .vertexSeq() ) . n) = (W1 . ((2 * n) - 1)) & ((W1 .vertexSeq() ) . (n + 1)) = (W1 . ((2 * (n + 1)) - 1)) by A4, A8, GLIB_001:def 14, GLIB_001:def 15;

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

          then (2 - 1) <= ((2 * n) - 1) by XREAL_1: 9;

          then

          reconsider m = ((2 * n) - 1) as Element of NAT by INT_1: 3;

          (2 * (n + 1)) <= (2 * ( len p)) by A4, XREAL_1: 64;

          then ((2 * n) + 2) <= (((2 * ( len p)) - 2) + 2);

          then m <= (((2 * ( len p)) - 2) - 1) by XREAL_1: 6, XREAL_1: 9;

          then m <= (((2 * ( len (W1 .vertexSeq() ))) - 2) - 1) by A1, FINSEQ_2: 29;

          then

           A12: m <= (((( len W1) + 1) - 2) - 1) by GLIB_001:def 14;

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

          then m < ( len W1) by A12, XXREAL_0: 2;

          then

           A13: (W1 . (m + 1)) Joins ((W1 . m),(W1 . (m + 2)),G1) by GLIB_001:def 3;

          ((F _E ) . ((W1 .edgeSeq() ) . n)) Joins (((F _V ) . ((W1 .vertexSeq() ) . n)),((F _V ) . ((W1 .vertexSeq() ) . (n + 1))),G2) by A10, A11, A13, Th4;

          then (q . n) Joins (((F _V ) . ((W1 .vertexSeq() ) . n)),((F _V ) . ((W1 .vertexSeq() ) . (n + 1))),G2) by A10, FUNCT_1: 13;

          then (q . n) Joins ((p . n),((F _V ) . ((W1 .vertexSeq() ) . (n + 1))),G2) by A10, FUNCT_1: 13;

          hence (q . n) Joins ((p . n),(p . (n + 1)),G2) by A10, FUNCT_1: 13;

        end;

        then

        consider W2 be Walk of G2 such that

         A14: (W2 .vertexSeq() ) = p & (W2 .edgeSeq() ) = q by A3, GLIB_009: 27;

        take W2;

        thus thesis by A14;

      end;

      uniqueness by GLIB_009: 26;

    end

    registration

      let G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2;

      let W1 be F -defined Walk of G1;

      cluster (F .: W1) -> F -valued;

      coherence

      proof

        

         A1: ((F _V ) * (W1 .vertexSeq() )) = ((F .: W1) .vertexSeq() ) & ((F _E ) * (W1 .edgeSeq() )) = ((F .: W1) .edgeSeq() ) by Def37;

        ((F .: W1) .vertices() ) = ( rng ((F .: W1) .vertexSeq() )) by GLIB_001:def 16;

        hence ((F .: W1) .vertices() ) c= ( rng (F _V )) by A1, RELAT_1: 26;

        ((F .: W1) .edges() ) = ( rng ((F .: W1) .edgeSeq() )) by GLIB_001:def 17;

        hence ((F .: W1) .edges() ) c= ( rng (F _E )) by A1, RELAT_1: 26;

        thus thesis;

      end;

    end

    definition

      let G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2;

      let W1 be F -defined Walk of G1;

      :: original: .:

      redefine

      func F .: W1 -> F -valued Walk of G2 ;

      correctness ;

    end

    definition

      let G1,G2 be _Graph, F be non empty one-to-one PGraphMapping of G1, G2;

      let W2 be F -valued Walk of G2;

      :: GLIB_010:def38

      func F " W2 -> F -defined Walk of G1 equals ((F " ) .: W2);

      coherence

      proof

        ((F " ) .: W2) is ((F " ) " ) -defined;

        then ((F " ) .: W2) is F -defined by Th70;

        hence thesis;

      end;

    end

    

     Lm5: for G1,G2 be _Graph holds for F be non empty one-to-one PGraphMapping of G1, G2 holds for W2 be F -valued Walk of G2 holds ((F _V ) * ((F " W2) .vertexSeq() )) = (W2 .vertexSeq() ) & ((F _E ) * ((F " W2) .edgeSeq() )) = (W2 .edgeSeq() )

    proof

      let G1,G2 be _Graph;

      let F be non empty one-to-one PGraphMapping of G1, G2;

      let W2 be F -valued Walk of G2;

      (W2 .vertices() ) c= ( rng (F _V )) by Def36;

      then

       A1: ( rng (W2 .vertexSeq() )) c= ( rng (F _V )) by GLIB_001:def 16;

      ((F " W2) .vertexSeq() ) = (((F _V ) " ) * (W2 .vertexSeq() )) by Def37;

      

      hence ((F _V ) * ((F " W2) .vertexSeq() )) = (((F _V ) * ((F _V ) " )) * (W2 .vertexSeq() )) by RELAT_1: 36

      .= (( id ( rng (F _V ))) * (W2 .vertexSeq() )) by FUNCT_1: 39

      .= (W2 .vertexSeq() ) by A1, RELAT_1: 53;

      (W2 .edges() ) c= ( rng (F _E )) by Def36;

      then

       A2: ( rng (W2 .edgeSeq() )) c= ( rng (F _E )) by GLIB_001:def 17;

      ((F " W2) .edgeSeq() ) = (((F _E ) " ) * (W2 .edgeSeq() )) by Def37;

      

      hence ((F _E ) * ((F " W2) .edgeSeq() )) = (((F _E ) * ((F _E ) " )) * (W2 .edgeSeq() )) by RELAT_1: 36

      .= (( id ( rng (F _E ))) * (W2 .edgeSeq() )) by FUNCT_1: 39

      .= (W2 .edgeSeq() ) by A2, RELAT_1: 53;

    end;

    definition

      let G1,G2 be _Graph, F be non empty one-to-one PGraphMapping of G1, G2;

      let W2 be F -valued Walk of G2;

      :: original: "

      redefine

      :: GLIB_010:def39

      func F " W2 means ((F _V ) * (it .vertexSeq() )) = (W2 .vertexSeq() ) & ((F _E ) * (it .edgeSeq() )) = (W2 .edgeSeq() );

      compatibility

      proof

        let W1 be F -defined Walk of G1;

        thus W1 = (F " W2) implies ((F _V ) * (W1 .vertexSeq() )) = (W2 .vertexSeq() ) & ((F _E ) * (W1 .edgeSeq() )) = (W2 .edgeSeq() ) by Lm5;

        assume that

         A1: ((F _V ) * (W1 .vertexSeq() )) = (W2 .vertexSeq() ) and

         A2: ((F _E ) * (W1 .edgeSeq() )) = (W2 .edgeSeq() );

        ( rng (W1 .vertexSeq() )) = (W1 .vertices() ) & ( rng (W1 .edgeSeq() )) = (W1 .edges() ) by GLIB_001:def 16, GLIB_001:def 17;

        then

         A3: ( rng (W1 .vertexSeq() )) c= ( dom (F _V )) & ( rng (W1 .edgeSeq() )) c= ( dom (F _E )) by Def35;

        

         A4: (((F " ) _V ) * (W2 .vertexSeq() )) = ((((F _V ) " ) * (F _V )) * (W1 .vertexSeq() )) by A1, RELAT_1: 36

        .= (( id ( dom (F _V ))) * (W1 .vertexSeq() )) by FUNCT_1: 39

        .= (W1 .vertexSeq() ) by A3, RELAT_1: 53;

        (((F " ) _E ) * (W2 .edgeSeq() )) = ((((F _E ) " ) * (F _E )) * (W1 .edgeSeq() )) by A2, RELAT_1: 36

        .= (( id ( dom (F _E ))) * (W1 .edgeSeq() )) by FUNCT_1: 39

        .= (W1 .edgeSeq() ) by A3, RELAT_1: 53;

        hence W1 = (F " W2) by A4, Def37;

      end;

    end

    theorem :: GLIB_010:123

    

     Th123: for G1,G2 be _Graph holds for F be non empty one-to-one PGraphMapping of G1, G2 holds for W1 be F -defined Walk of G1 holds (F " (F .: W1)) = W1

    proof

      let G1,G2 be _Graph, F be non empty one-to-one PGraphMapping of G1, G2;

      let W1 be F -defined Walk of G1;

      (W1 .vertices() ) c= ( dom (F _V )) by Def35;

      then

       A1: ( rng (W1 .vertexSeq() )) c= ( dom (F _V )) by GLIB_001:def 16;

      

       A2: ((F " (F .: W1)) .vertexSeq() ) = (((F " ) _V ) * ((F .: W1) .vertexSeq() )) by Def37

      .= (((F _V ) " ) * ((F _V ) * (W1 .vertexSeq() ))) by Def37

      .= ((((F _V ) " ) * (F _V )) * (W1 .vertexSeq() )) by RELAT_1: 36

      .= (( id ( dom (F _V ))) * (W1 .vertexSeq() )) by FUNCT_1: 39

      .= (W1 .vertexSeq() ) by A1, RELAT_1: 53;

      (W1 .edges() ) c= ( dom (F _E )) by Def35;

      then

       A3: ( rng (W1 .edgeSeq() )) c= ( dom (F _E )) by GLIB_001:def 17;

      ((F " (F .: W1)) .edgeSeq() ) = (((F " ) _E ) * ((F .: W1) .edgeSeq() )) by Def37

      .= (((F _E ) " ) * ((F _E ) * (W1 .edgeSeq() ))) by Def37

      .= ((((F _E ) " ) * (F _E )) * (W1 .edgeSeq() )) by RELAT_1: 36

      .= (( id ( dom (F _E ))) * (W1 .edgeSeq() )) by FUNCT_1: 39

      .= (W1 .edgeSeq() ) by A3, RELAT_1: 53;

      hence thesis by A2, GLIB_009: 26;

    end;

    theorem :: GLIB_010:124

    for G1,G2 be _Graph holds for F be non empty one-to-one PGraphMapping of G1, G2 holds for W2 be F -valued Walk of G2 holds (F .: (F " W2)) = W2

    proof

      let G1,G2 be _Graph, F be non empty one-to-one PGraphMapping of G1, G2;

      let W2 be F -valued Walk of G2;

      (W2 .vertices() ) c= ( rng (F _V )) by Def36;

      then

       A1: ( rng (W2 .vertexSeq() )) c= ( rng (F _V )) by GLIB_001:def 16;

      

       A2: ((F .: (F " W2)) .vertexSeq() ) = ((F _V ) * (((F " ) .: W2) .vertexSeq() )) by Def37

      .= ((F _V ) * (((F " ) _V ) * (W2 .vertexSeq() ))) by Def37

      .= (((F _V ) * ((F _V ) " )) * (W2 .vertexSeq() )) by RELAT_1: 36

      .= (( id ( rng (F _V ))) * (W2 .vertexSeq() )) by FUNCT_1: 39

      .= (W2 .vertexSeq() ) by A1, RELAT_1: 53;

      (W2 .edges() ) c= ( rng (F _E )) by Def36;

      then

       A3: ( rng (W2 .edgeSeq() )) c= ( rng (F _E )) by GLIB_001:def 17;

      ((F .: (F " W2)) .edgeSeq() ) = ((F _E ) * (((F " ) .: W2) .edgeSeq() )) by Def37

      .= ((F _E ) * (((F " ) _E ) * (W2 .edgeSeq() ))) by Def37

      .= (((F _E ) * ((F _E ) " )) * (W2 .edgeSeq() )) by RELAT_1: 36

      .= (( id ( rng (F _E ))) * (W2 .edgeSeq() )) by FUNCT_1: 39

      .= (W2 .edgeSeq() ) by A3, RELAT_1: 53;

      hence thesis by A2, GLIB_009: 26;

    end;

    theorem :: GLIB_010:125

    

     Th125: for G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2, W1 be F -defined Walk of G1 holds (W1 .length() ) = ((F .: W1) .length() ) & ( len W1) = ( len (F .: W1))

    proof

      let G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2;

      let W1 be F -defined Walk of G1;

      (W1 .edges() ) = ( rng (W1 .edgeSeq() )) by GLIB_001:def 17;

      then

       A1: ( rng (W1 .edgeSeq() )) c= ( dom (F _E )) by Def35;

      then

      reconsider p = ((F _E ) * (W1 .edgeSeq() )) as FinSequence by FINSEQ_1: 16;

      

      thus

       A2: (W1 .length() ) = ( len (W1 .edgeSeq() )) by GLIB_001:def 18

      .= ( len p) by A1, FINSEQ_2: 29

      .= ( len ((F .: W1) .edgeSeq() )) by Def37

      .= ((F .: W1) .length() ) by GLIB_001:def 18;

      

      thus ( len W1) = ((2 * ( len (W1 .edgeSeq() ))) + 1) by GLIB_001:def 15

      .= ((2 * (W1 .length() )) + 1) by GLIB_001:def 18

      .= ((2 * ( len ((F .: W1) .edgeSeq() ))) + 1) by A2, GLIB_001:def 18

      .= ( len (F .: W1)) by GLIB_001:def 15;

    end;

    theorem :: GLIB_010:126

    for G1,G2 be _Graph, F be non empty one-to-one PGraphMapping of G1, G2, W2 be F -valued Walk of G2 holds (W2 .length() ) = ((F " W2) .length() ) & ( len W2) = ( len (F " W2)) by Th125;

    theorem :: GLIB_010:127

    

     Th127: for G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2, W1 be F -defined Walk of G1 holds ((F _V ) . (W1 .first() )) = ((F .: W1) .first() ) & ((F _V ) . (W1 .last() )) = ((F .: W1) .last() )

    proof

      let G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2;

      let W1 be F -defined Walk of G1;

      set n = ( len (W1 .vertexSeq() ));

      1 <= n by GLIB_001: 67;

      then

       A1: 1 in ( dom (W1 .vertexSeq() )) & n in ( dom (W1 .vertexSeq() )) by FINSEQ_3: 25;

      (W1 .vertices() ) = ( rng (W1 .vertexSeq() )) by GLIB_001:def 16;

      then

       A2: ( rng (W1 .vertexSeq() )) c= ( dom (F _V )) by Def35;

      then

      reconsider p = ((F _V ) * (W1 .vertexSeq() )) as FinSequence by FINSEQ_1: 16;

      

       A3: n = ( len p) by A2, FINSEQ_2: 29

      .= ( len ((F .: W1) .vertexSeq() )) by Def37;

      

      thus ((F _V ) . (W1 .first() )) = ((F _V ) . ((W1 .vertexSeq() ) . 1)) by GLIB_001: 71

      .= (((F _V ) * (W1 .vertexSeq() )) . 1) by A1, FUNCT_1: 13

      .= (((F .: W1) .vertexSeq() ) . 1) by Def37

      .= ((F .: W1) .first() ) by GLIB_001: 71;

      

      thus ((F _V ) . (W1 .last() )) = ((F _V ) . ((W1 .vertexSeq() ) . n)) by GLIB_001: 71

      .= (((F _V ) * (W1 .vertexSeq() )) . n) by A1, FUNCT_1: 13

      .= (((F .: W1) .vertexSeq() ) . n) by Def37

      .= ((F .: W1) .last() ) by A3, GLIB_001: 71;

    end;

    theorem :: GLIB_010:128

    for G1,G2 be _Graph, F be non empty one-to-one PGraphMapping of G1, G2, W2 be F -valued Walk of G2 holds (((F _V ) " ) . (W2 .first() )) = ((F " W2) .first() ) & (((F _V ) " ) . (W2 .last() )) = ((F " W2) .last() ) by Th127;

    theorem :: GLIB_010:129

    

     Th129: for G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2, W1 be F -defined Walk of G1, n be odd Element of NAT st n <= ( len W1) holds ((F _V ) . (W1 . n)) = ((F .: W1) . n)

    proof

      let G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2;

      let W1 be F -defined Walk of G1, n be odd Element of NAT ;

      assume

       A1: n <= ( len W1);

      then

       A2: n <= ( len (F .: W1)) by Th125;

      

       A3: 1 <= ((n + 1) div 2) & ((n + 1) div 2) <= ( len (W1 .vertexSeq() )) by A1, GLIB_001: 68;

      

       A4: ((n + 1) div 2) in ( dom (W1 .vertexSeq() )) by A3, FINSEQ_3: 25;

      (W1 . n) = (W1 .vertexAt n) by A1, GLIB_001:def 8

      .= ((W1 .vertexSeq() ) . ((n + 1) div 2)) by A1, GLIB_001: 72;

      

      hence ((F _V ) . (W1 . n)) = (((F _V ) * (W1 .vertexSeq() )) . ((n + 1) div 2)) by A4, FUNCT_1: 13

      .= (((F .: W1) .vertexSeq() ) . ((n + 1) div 2)) by Def37

      .= ((F .: W1) .vertexAt n) by A2, GLIB_001: 72

      .= ((F .: W1) . n) by A2, GLIB_001:def 8;

    end;

    theorem :: GLIB_010:130

    for G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2, W1 be F -defined Walk of G1, n be even Element of NAT st 1 <= n & n <= ( len W1) holds ((F _E ) . (W1 . n)) = ((F .: W1) . n)

    proof

      let G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2;

      let W1 be F -defined Walk of G1, n be even Element of NAT ;

      assume

       A1: 1 <= n & n <= ( len W1);

      then

       A2: n <= ( len (F .: W1)) by Th125;

      

       A3: (n div 2) in ( dom (W1 .edgeSeq() )) & (W1 . n) = ((W1 .edgeSeq() ) . (n div 2)) by A1, GLIB_001: 77;

      

      thus ((F _E ) . (W1 . n)) = (((F _E ) * (W1 .edgeSeq() )) . (n div 2)) by A3, FUNCT_1: 13

      .= (((F .: W1) .edgeSeq() ) . (n div 2)) by Def37

      .= ((F .: W1) . n) by A1, A2, GLIB_001: 77;

    end;

    theorem :: GLIB_010:131

    

     Th131: for G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2, W1 be F -defined Walk of G1, v,w be object holds W1 is_Walk_from (v,w) implies v in ( dom (F _V )) & w in ( dom (F _V ))

    proof

      let G1,G2 be _Graph;

      let F be non empty PGraphMapping of G1, G2;

      let W1 be F -defined Walk of G1, v,w be object;

      assume W1 is_Walk_from (v,w);

      then (W1 .first() ) = v & (W1 .last() ) = w by GLIB_001:def 23;

      then v in (W1 .vertices() ) & w in (W1 .vertices() ) by GLIB_001: 88;

      hence v in ( dom (F _V )) & w in ( dom (F _V )) by Def35, TARSKI:def 3;

    end;

    theorem :: GLIB_010:132

    

     Th132: for G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2, W1 be F -defined Walk of G1, v,w be object holds W1 is_Walk_from (v,w) implies (F .: W1) is_Walk_from (((F _V ) . v),((F _V ) . w))

    proof

      let G1,G2 be _Graph;

      let F be non empty PGraphMapping of G1, G2;

      let W1 be F -defined Walk of G1, v,w be object;

      assume W1 is_Walk_from (v,w);

      then (W1 .first() ) = v & (W1 .last() ) = w by GLIB_001:def 23;

      then (W1 . 1) = v & (W1 . ( len W1)) = w by GLIB_001:def 6, GLIB_001:def 7;

      then ((F _V ) . v) = ((F .: W1) . 1) & ((F _V ) . w) = ((F .: W1) . ( len W1)) by Th129, ABIAN: 12, POLYFORM: 4;

      then ((F _V ) . v) = ((F .: W1) .first() ) & ((F _V ) . w) = ((F .: W1) . ( len (F .: W1))) by GLIB_001:def 6, Th125;

      then ((F _V ) . v) = ((F .: W1) .first() ) & ((F _V ) . w) = ((F .: W1) .last() ) by GLIB_001:def 7;

      hence (F .: W1) is_Walk_from (((F _V ) . v),((F _V ) . w)) by GLIB_001:def 23;

    end;

    theorem :: GLIB_010:133

    for G1,G2 be _Graph, F be non empty one-to-one PGraphMapping of G1, G2, W1 be F -defined Walk of G1, v,w be object holds W1 is_Walk_from (v,w) iff v in ( dom (F _V )) & w in ( dom (F _V )) & (F .: W1) is_Walk_from (((F _V ) . v),((F _V ) . w))

    proof

      let G1,G2 be _Graph;

      let F be non empty one-to-one PGraphMapping of G1, G2;

      let W1 be F -defined Walk of G1, v,w be object;

      thus W1 is_Walk_from (v,w) implies v in ( dom (F _V )) & w in ( dom (F _V )) & (F .: W1) is_Walk_from (((F _V ) . v),((F _V ) . w)) by Th131, Th132;

      assume that

       A1: v in ( dom (F _V )) & w in ( dom (F _V )) and

       A2: (F .: W1) is_Walk_from (((F _V ) . v),((F _V ) . w));

      (F " (F .: W1)) is_Walk_from ((((F " ) _V ) . ((F _V ) . v)),(((F " ) _V ) . ((F _V ) . w))) by A2, Th132;

      then W1 is_Walk_from ((((F _V ) " ) . ((F _V ) . v)),(((F _V ) " ) . ((F _V ) . w))) by Th123;

      then W1 is_Walk_from (v,(((F _V ) " ) . ((F _V ) . w))) by A1, FUNCT_1: 34;

      hence thesis by A1, FUNCT_1: 34;

    end;

    theorem :: GLIB_010:134

    for G1,G2 be _Graph, F be non empty one-to-one PGraphMapping of G1, G2 holds for W1 be F -defined Walk of G1 st ((F _V ) . (W1 .first() )) = ((F _V ) . (W1 .last() )) holds (W1 .first() ) = (W1 .last() )

    proof

      let G1,G2 be _Graph, F be non empty one-to-one PGraphMapping of G1, G2;

      let W1 be F -defined Walk of G1;

      

       A1: F is semi-continuous;

      assume

       A2: ((F _V ) . (W1 .first() )) = ((F _V ) . (W1 .last() ));

      per cases ;

        suppose

         A3: ( len W1) >= 3;

        then 1 < ( len W1) by XXREAL_0: 2;

        then

         A4: (W1 . (1 + 1)) Joins ((W1 . 1),(W1 . (1 + 2)),G1) by POLYFORM: 4, GLIB_001:def 3;

        

         A5: (W1 . 1) in (W1 .vertices() ) & (W1 . 3) in (W1 .vertices() ) & (W1 .last() ) in (W1 .vertices() ) by A3, XXREAL_0: 2, GLIB_001: 87, GLIB_001: 88, POLYFORM: 4, POLYFORM: 6;

        1 <= 2 & 2 <= ( len W1) by A3, XXREAL_0: 2;

        then (W1 . 2) in (W1 .edges() ) by POLYFORM: 5, GLIB_001: 99;

        then

         A6: (W1 . 1) in ( dom (F _V )) & (W1 . 2) in ( dom (F _E )) & (W1 . 3) in ( dom (F _V )) & (W1 .last() ) in ( dom (F _V )) by A5, Def35, TARSKI:def 3;

        ((F _E ) . (W1 . 2)) Joins (((F _V ) . (W1 . 1)),((F _V ) . (W1 . 3)),G2) by A6, A4, Th4;

        then ((F _E ) . (W1 . 2)) Joins (((F _V ) . (W1 .last() )),((F _V ) . (W1 . 3)),G2) by A2, GLIB_001:def 6;

        then (W1 . 2) Joins ((W1 .last() ),(W1 . 3),G1) by A1, A6;

        then ((W1 . 1) = (W1 .last() ) & (W1 . 3) = (W1 . 3)) or ((W1 . 1) = (W1 . 3) & (W1 . 3) = (W1 .last() )) by A4, GLIB_000: 15;

        hence thesis by GLIB_001:def 6;

      end;

        suppose not (( len W1) >= 3);

        hence thesis by GLIB_001: 125, GLIB_001: 127;

      end;

    end;

    theorem :: GLIB_010:135

    for G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2 holds for W1 be F -defined Walk of G1 holds ((F .: W1) .vertices() ) = ((F _V ) .: (W1 .vertices() ))

    proof

      let G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2;

      let W1 be F -defined Walk of G1;

      

       A1: ((F .: W1) .vertices() ) = ( rng ((F .: W1) .vertexSeq() )) by GLIB_001:def 16

      .= ( rng ((F _V ) * (W1 .vertexSeq() ))) by Def37;

      for y be object holds y in ( rng ((F _V ) * (W1 .vertexSeq() ))) iff y in ((F _V ) .: (W1 .vertices() ))

      proof

        let y be object;

        hereby

          assume y in ( rng ((F _V ) * (W1 .vertexSeq() )));

          then

          consider x be object such that

           A2: x in ( dom ((F _V ) * (W1 .vertexSeq() ))) & (((F _V ) * (W1 .vertexSeq() )) . x) = y by FUNCT_1:def 3;

          set v = ((W1 .vertexSeq() ) . x);

          x in ( dom (W1 .vertexSeq() )) by A2, FUNCT_1: 11;

          then v in ( rng (W1 .vertexSeq() )) by FUNCT_1: 3;

          then

           A3: v in (W1 .vertices() ) by GLIB_001:def 16;

          

           A4: v in ( dom (F _V )) by A2, FUNCT_1: 11;

          ((F _V ) . v) = y by A2, FUNCT_1: 12;

          hence y in ((F _V ) .: (W1 .vertices() )) by A3, A4, FUNCT_1:def 6;

        end;

        assume y in ((F _V ) .: (W1 .vertices() ));

        then

        consider v be object such that

         A5: v in ( dom (F _V )) & v in (W1 .vertices() ) & ((F _V ) . v) = y by FUNCT_1:def 6;

        v in ( rng (W1 .vertexSeq() )) by A5, GLIB_001:def 16;

        then

        consider x be object such that

         A6: x in ( dom (W1 .vertexSeq() )) & ((W1 .vertexSeq() ) . x) = v by FUNCT_1:def 3;

        

         A7: (((F _V ) * (W1 .vertexSeq() )) . x) = y by A5, A6, FUNCT_1: 13;

        x in ( dom ((F _V ) * (W1 .vertexSeq() ))) by A5, A6, FUNCT_1: 11;

        hence y in ( rng ((F _V ) * (W1 .vertexSeq() ))) by A7, FUNCT_1: 3;

      end;

      hence thesis by A1, TARSKI: 2;

    end;

    theorem :: GLIB_010:136

    

     Th136: for G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2 holds for W1 be F -defined Walk of G1 holds ((F .: W1) .edges() ) = ((F _E ) .: (W1 .edges() ))

    proof

      let G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2;

      let W1 be F -defined Walk of G1;

      

       A1: ((F .: W1) .edges() ) = ( rng ((F .: W1) .edgeSeq() )) by GLIB_001:def 17

      .= ( rng ((F _E ) * (W1 .edgeSeq() ))) by Def37;

      for y be object holds y in ( rng ((F _E ) * (W1 .edgeSeq() ))) iff y in ((F _E ) .: (W1 .edges() ))

      proof

        let y be object;

        hereby

          assume y in ( rng ((F _E ) * (W1 .edgeSeq() )));

          then

          consider x be object such that

           A2: x in ( dom ((F _E ) * (W1 .edgeSeq() ))) & (((F _E ) * (W1 .edgeSeq() )) . x) = y by FUNCT_1:def 3;

          set v = ((W1 .edgeSeq() ) . x);

          x in ( dom (W1 .edgeSeq() )) by A2, FUNCT_1: 11;

          then v in ( rng (W1 .edgeSeq() )) by FUNCT_1: 3;

          then

           A3: v in (W1 .edges() ) by GLIB_001:def 17;

          

           A4: v in ( dom (F _E )) by A2, FUNCT_1: 11;

          ((F _E ) . v) = y by A2, FUNCT_1: 12;

          hence y in ((F _E ) .: (W1 .edges() )) by A3, A4, FUNCT_1:def 6;

        end;

        assume y in ((F _E ) .: (W1 .edges() ));

        then

        consider v be object such that

         A5: v in ( dom (F _E )) & v in (W1 .edges() ) & ((F _E ) . v) = y by FUNCT_1:def 6;

        v in ( rng (W1 .edgeSeq() )) by A5, GLIB_001:def 17;

        then

        consider x be object such that

         A6: x in ( dom (W1 .edgeSeq() )) & ((W1 .edgeSeq() ) . x) = v by FUNCT_1:def 3;

        

         A7: (((F _E ) * (W1 .edgeSeq() )) . x) = y by A5, A6, FUNCT_1: 13;

        x in ( dom ((F _E ) * (W1 .edgeSeq() ))) by A5, A6, FUNCT_1: 11;

        hence y in ( rng ((F _E ) * (W1 .edgeSeq() ))) by A7, FUNCT_1: 3;

      end;

      hence thesis by A1, TARSKI: 2;

    end;

    theorem :: GLIB_010:137

    

     Th137: for G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2, W1 be F -defined Walk of G1 holds (W1 is trivial implies (F .: W1) is trivial) & (W1 is closed implies (F .: W1) is closed) & ((F .: W1) is Trail-like implies W1 is Trail-like) & ((F .: W1) is Path-like implies W1 is Path-like)

    proof

      let G1,G2 be _Graph, F be non empty PGraphMapping of G1, G2;

      let W1 be F -defined Walk of G1;

      hereby

        assume W1 is trivial;

        then (W1 .length() ) = 0 by GLIB_001:def 26;

        then ((F .: W1) .length() ) = 0 by Th125;

        hence (F .: W1) is trivial by GLIB_001:def 26;

      end;

      hereby

        assume

         A1: W1 is closed;

        ((F .: W1) .first() ) = ((F _V ) . (W1 .first() )) by Th127

        .= ((F _V ) . (W1 .last() )) by A1, GLIB_001:def 24

        .= ((F .: W1) .last() ) by Th127;

        hence (F .: W1) is closed by GLIB_001:def 24;

      end;

      thus

       A2: (F .: W1) is Trail-like implies W1 is Trail-like

      proof

        assume (F .: W1) is Trail-like;

        then ((F .: W1) .edgeSeq() ) is one-to-one by GLIB_001:def 27;

        then

         A3: ((F _E ) * (W1 .edgeSeq() )) is one-to-one by Def37;

        (W1 .edges() ) = ( rng (W1 .edgeSeq() )) by GLIB_001:def 17;

        then ( rng (W1 .edgeSeq() )) c= ( dom (F _E )) by Def35;

        then (W1 .edgeSeq() ) is one-to-one by A3, FUNCT_1: 25;

        hence W1 is Trail-like by GLIB_001:def 27;

      end;

      assume

       A4: (F .: W1) is Path-like;

      for m,n be odd Element of NAT st m < n & n <= ( len W1) holds (W1 . m) = (W1 . n) implies m = 1 & n = ( len W1)

      proof

        let m,n be odd Element of NAT ;

        assume

         A5: m < n & n <= ( len W1);

        

         A6: ( len W1) = ((2 * ( len (W1 .edgeSeq() ))) + 1) by GLIB_001:def 15

        .= ((2 * (W1 .length() )) + 1) by GLIB_001:def 18

        .= ((2 * ((F .: W1) .length() )) + 1) by Th125

        .= ((2 * ( len ((F .: W1) .edgeSeq() ))) + 1) by GLIB_001:def 18

        .= ( len (F .: W1)) by GLIB_001:def 15;

        assume

         A7: (W1 . n) = (W1 . m);

        ((F .: W1) . n) = ((F _V ) . (W1 . n)) by A5, Th129

        .= ((F .: W1) . m) by A5, A7, Th129, XXREAL_0: 2;

        then m = 1 & n = ( len (F .: W1)) by A4, A5, A6, GLIB_001:def 28;

        hence thesis by A6;

      end;

      hence W1 is Path-like by A2, A4, GLIB_001:def 28;

    end;

    theorem :: GLIB_010:138

    

     Th138: for G1,G2 be _Graph, F be non empty one-to-one PGraphMapping of G1, G2, W1 be F -defined Walk of G1 holds (W1 is trivial iff (F .: W1) is trivial) & (W1 is closed iff (F .: W1) is closed) & (W1 is Trail-like iff (F .: W1) is Trail-like) & (W1 is Path-like iff (F .: W1) is Path-like) & (W1 is Circuit-like iff (F .: W1) is Circuit-like) & (W1 is Cycle-like iff (F .: W1) is Cycle-like)

    proof

      let G1,G2 be _Graph;

      let F be non empty one-to-one PGraphMapping of G1, G2;

      let W1 be F -defined Walk of G1;

      W1 = (F " (F .: W1)) by Th123;

      hence

       A1: (W1 is trivial iff (F .: W1) is trivial) & (W1 is closed iff (F .: W1) is closed) & (W1 is Trail-like iff (F .: W1) is Trail-like) & (W1 is Path-like iff (F .: W1) is Path-like) by Th137;

      thus W1 is Circuit-like iff (F .: W1) is Circuit-like by A1;

      thus W1 is Cycle-like iff (F .: W1) is Cycle-like by A1;

    end;

    theorem :: GLIB_010:139

    

     Th139: for G1,G2 be _Graph, F be PGraphMapping of G1, G2 st F is strong_SG-embedding holds G2 is acyclic implies G1 is acyclic

    proof

      let G1,G2 be _Graph, F be PGraphMapping of G1, G2;

      assume

       A1: F is strong_SG-embedding;

      then

      reconsider F as non empty one-to-one PGraphMapping of G1, G2;

      assume

       A2: G2 is acyclic;

       not ex W1 be Walk of G1 st W1 is Cycle-like

      proof

        given W1 be Walk of G1 such that

         A3: W1 is Cycle-like;

        reconsider W1 as F -defined Walk of G1 by A1, Th121;

        (F .: W1) is Cycle-like by A3, Th138;

        hence contradiction by A2, GLIB_002:def 2;

      end;

      hence G1 is acyclic by GLIB_002:def 2;

    end;

    theorem :: GLIB_010:140

    for G1,G2 be _Graph, F be PGraphMapping of G1, G2 st F is isomorphism holds (G1 is acyclic iff G2 is acyclic) & (G1 is chordal iff G2 is chordal) & (G1 is connected iff G2 is connected)

    proof

      let G1,G2 be _Graph;

      let F be PGraphMapping of G1, G2;

      assume

       A1: F is isomorphism;

      then

      reconsider F as non empty one-to-one PGraphMapping of G1, G2;

      

       A2: (F " ) is isomorphism semi-continuous by A1, Th75;

      hence G1 is acyclic iff G2 is acyclic by A1, Th139;

      

       A3: F is semi-continuous;

      hereby

        assume

         A4: G1 is chordal;

        now

          let P be Walk of G2;

          assume

           A5: (P .length() ) > 3 & P is Cycle-like;

          now

            reconsider C = P as F -valued Walk of G2 by A1, Th122;

            

             A6: ((F " C) .length() ) > 3 by A5, Th125;

            (F " C) is Cycle-like by A5, Th138;

            then (F " C) is chordal by A4, A6, CHORD:def 11;

            then

            consider m,n be odd Nat such that

             A7: (m + 2) < n & n <= ( len (F " C)) & ((F " C) . m) <> ((F " C) . n) and

             A8: ex e be object st e Joins (((F " C) . m),((F " C) . n),G1) and

             A9: for f be object st f in ((F " C) .edges() ) holds not f Joins (((F " C) . m),((F " C) . n),G1) by CHORD:def 10;

            take m, n;

            thus

             A10: (m + 2) < n & n <= ( len P) by A7, Th125;

            

             A11: n is odd Element of NAT by ORDINAL1:def 12;

            then

             A12: ((F " C) . n) = (((F " ) _V ) . (C . n)) by A10, Th129;

            ((m + 2) - 2) <= (n - 0 ) by A10, XREAL_1: 13;

            then

             A13: m <= ( len P) by A10, XXREAL_0: 2;

            

             A14: m is odd Element of NAT by ORDINAL1:def 12;

            then

             A15: ((F " C) . m) = (((F " ) _V ) . (C . m)) by A13, Th129;

            hence (P . m) <> (P . n) by A7, A12;

            (P . m) in ( the_Vertices_of G2) & (P . n) in ( the_Vertices_of G2) by A10, A11, A13, A14, GLIB_001: 7;

            then

             A16: (P . m) in ( dom ((F " ) _V )) & (P . n) in ( dom ((F " ) _V )) by A2, Def11;

            thus ex e be object st e Joins ((P . m),(P . n),G2)

            proof

              consider e0 be object such that

               A17: e0 Joins (((F " C) . m),((F " C) . n),G1) by A8;

              e0 in ( the_Edges_of G1) by A17, GLIB_000:def 13;

              then e0 in ( rng ((F " ) _E )) by A2, Def12;

              then

              consider e be object such that

               A18: e in ( dom ((F " ) _E )) & (((F " ) _E ) . e) = e0 by FUNCT_1:def 3;

              take e;

              (((F " ) _E ) . e) Joins ((((F " ) _V ) . (C . m)),(((F " ) _V ) . (C . n)),G1) by A12, A15, A17, A18;

              hence e Joins ((P . m),(P . n),G2) by A2, A16, A18;

            end;

            let f be object;

            assume

             A19: f in (P .edges() );

            then f in ( the_Edges_of G2);

            then

             A20: f in ( dom ((F " ) _E )) by A2, Def11;

            then (((F " ) _E ) . f) in (((F " ) _E ) .: (P .edges() )) by A19, FUNCT_1:def 6;

            then

             A21: (((F " ) _E ) . f) in ((F " C) .edges() ) by Th136;

            thus not f Joins ((P . m),(P . n),G2) by A9, A12, A15, A16, A20, A21, Th4;

          end;

          hence P is chordal by CHORD:def 10;

        end;

        hence G2 is chordal by CHORD:def 11;

      end;

      hereby

        assume

         A22: G2 is chordal;

        now

          let P be Walk of G1;

          assume

           A23: (P .length() ) > 3 & P is Cycle-like;

          now

            reconsider C = P as F -defined Walk of G1 by A1, Th121;

            

             A24: ((F .: C) .length() ) > 3 by A23, Th125;

            (F .: C) is Cycle-like by A23, Th138;

            then (F .: C) is chordal by A22, A24, CHORD:def 11;

            then

            consider m,n be odd Nat such that

             A25: (m + 2) < n & n <= ( len (F .: C)) & ((F .: C) . m) <> ((F .: C) . n) and

             A26: ex e be object st e Joins (((F .: C) . m),((F .: C) . n),G2) and

             A27: for f be object st f in ((F .: C) .edges() ) holds not f Joins (((F .: C) . m),((F .: C) . n),G2) by CHORD:def 10;

            take m, n;

            thus

             A28: (m + 2) < n & n <= ( len P) by A25, Th125;

            

             A29: n is odd Element of NAT by ORDINAL1:def 12;

            then

             A30: ((F .: C) . n) = ((F _V ) . (C . n)) by A28, Th129;

            ((m + 2) - 2) <= (n - 0 ) by A28, XREAL_1: 13;

            then

             A31: m <= ( len P) by A28, XXREAL_0: 2;

            

             A32: m is odd Element of NAT by ORDINAL1:def 12;

            then

             A33: ((F .: C) . m) = ((F _V ) . (C . m)) by A31, Th129;

            hence (P . m) <> (P . n) by A25, A30;

            (P . m) in ( the_Vertices_of G1) & (P . n) in ( the_Vertices_of G1) by A28, A29, A31, A32, GLIB_001: 7;

            then

             A34: (P . m) in ( dom (F _V )) & (P . n) in ( dom (F _V )) by A1, Def11;

            thus ex e be object st e Joins ((P . m),(P . n),G1)

            proof

              consider e0 be object such that

               A35: e0 Joins (((F .: C) . m),((F .: C) . n),G2) by A26;

              e0 in ( the_Edges_of G2) by A35, GLIB_000:def 13;

              then e0 in ( rng (F _E )) by A1, Def12;

              then

              consider e be object such that

               A36: e in ( dom (F _E )) & ((F _E ) . e) = e0 by FUNCT_1:def 3;

              take e;

              ((F _E ) . e) Joins (((F _V ) . (C . m)),((F _V ) . (C . n)),G2) by A30, A33, A35, A36;

              hence e Joins ((P . m),(P . n),G1) by A3, A34, A36;

            end;

            let f be object;

            assume

             A37: f in (P .edges() );

            then f in ( the_Edges_of G1);

            then

             A38: f in ( dom (F _E )) by A1, Def11;

            then ((F _E ) . f) in ((F _E ) .: (P .edges() )) by A37, FUNCT_1:def 6;

            then

             A39: ((F _E ) . f) in ((F .: C) .edges() ) by Th136;

            thus not f Joins ((P . m),(P . n),G1) by A27, A30, A33, A34, A38, A39, Th4;

          end;

          hence P is chordal by CHORD:def 10;

        end;

        hence G1 is chordal by CHORD:def 11;

      end;

      hereby

        assume

         A40: G1 is connected;

        for u,v be Vertex of G2 holds ex W2 be Walk of G2 st W2 is_Walk_from (u,v)

        proof

          let u2,v2 be Vertex of G2;

          reconsider u1 = (((F " ) _V ) . u2), v1 = (((F " ) _V ) . v2) as Vertex of G1 by A1, Th79;

          consider W1 be Walk of G1 such that

           A41: W1 is_Walk_from (u1,v1) by A40, GLIB_002:def 1;

          reconsider W1 as F -defined Walk of G1 by A1, Th121;

          take (F .: W1);

          (F " ) is total by A2;

          then u2 in ( dom ((F _V ) " )) & v2 in ( dom ((F _V ) " ));

          then

           A42: u2 in ( rng (F _V )) & v2 in ( rng (F _V )) by FUNCT_1: 33;

          (F .: W1) is_Walk_from (((F _V ) . (((F _V ) " ) . u2)),((F _V ) . v1)) by A41, Th132;

          then (F .: W1) is_Walk_from (u2,((F _V ) . (((F _V ) " ) . v2))) by A42, FUNCT_1: 35;

          hence thesis by A42, FUNCT_1: 35;

        end;

        hence G2 is connected by GLIB_002:def 1;

      end;

      assume

       A43: G2 is connected;

      for u,v be Vertex of G1 holds ex W1 be Walk of G1 st W1 is_Walk_from (u,v)

      proof

        let u1,v1 be Vertex of G1;

        reconsider u2 = ((F _V ) . u1), v2 = ((F _V ) . v1) as Vertex of G2 by A1, Th34;

        consider W2 be Walk of G2 such that

         A44: W2 is_Walk_from (u2,v2) by A43, GLIB_002:def 1;

        reconsider W2 as F -valued Walk of G2 by A1, Th122;

        take (F " W2);

        

         A45: F is total by A1;

        (F " W2) is_Walk_from ((((F _V ) " ) . ((F _V ) . u1)),(((F " ) _V ) . v2)) by A44, Th132;

        then (F " W2) is_Walk_from (u1,(((F _V ) " ) . ((F _V ) . v1))) by A45, FUNCT_1: 34;

        hence thesis by A45, FUNCT_1: 34;

      end;

      hence G1 is connected by GLIB_002:def 1;

    end;

    begin

    theorem :: GLIB_010:141

    

     Th141: for G1,G2 be _Graph, E1,E2 be set holds for G3 be reverseEdgeDirections of G1, E1 holds for G4 be reverseEdgeDirections of G2, E2 holds for F0 be PGraphMapping of G1, G2 holds ex F be PGraphMapping of G3, G4 st F = F0 & (F0 is non empty implies F is non empty) & (F0 is total implies F is total) & (F0 is onto implies F is onto) & (F0 is one-to-one implies F is one-to-one) & (F0 is semi-continuous implies F is semi-continuous) & (F0 is continuous implies F is continuous)

    proof

      let G1,G2 be _Graph, E1,E2 be set;

      let G3 be reverseEdgeDirections of G1, E1;

      let G4 be reverseEdgeDirections of G2, E2;

      let F0 be PGraphMapping of G1, G2;

      reconsider F = F0 as PGraphMapping of G3, G4 by Th10;

      take F;

      thus F = F0;

      thus F0 is non empty implies F is non empty;

      thus F0 is total implies F is total by GLIB_007: 4;

      thus F0 is onto implies F is onto by GLIB_007: 4;

      thus F0 is one-to-one implies F is one-to-one;

      thus F0 is semi-continuous implies F is semi-continuous

      proof

        assume

         A1: F0 is semi-continuous;

        now

          let e,v,w be object;

          assume

           A2: e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V ));

          assume ((F _E ) . e) Joins (((F _V ) . v),((F _V ) . w),G4);

          then e Joins (v,w,G1) by A1, A2, GLIB_007: 9;

          hence e Joins (v,w,G3) by GLIB_007: 9;

        end;

        hence thesis;

      end;

      thus F0 is continuous implies F is continuous

      proof

        assume

         A3: F0 is continuous;

        now

          let e9,v,w be object;

          assume v in ( dom (F _V )) & w in ( dom (F _V )) & e9 Joins (((F _V ) . v),((F _V ) . w),G4);

          then

          consider e be object such that

           A4: e Joins (v,w,G1) & e in ( dom (F0 _E )) & ((F0 _E ) . e) = e9 by A3, GLIB_007: 9;

          take e;

          thus e Joins (v,w,G3) by A4, GLIB_007: 9;

          thus e in ( dom (F _E )) & ((F _E ) . e) = e9 by A4;

        end;

        hence thesis;

      end;

    end;

    theorem :: GLIB_010:142

    

     Th142: for G1,G2 be _Graph, E1,E2 be set holds for G3 be reverseEdgeDirections of G1, E1 holds for G4 be reverseEdgeDirections of G2, E2 holds for F0 be PGraphMapping of G1, G2 holds ex F be PGraphMapping of G3, G4 st F = F0 & (F0 is weak_SG-embedding implies F is weak_SG-embedding) & (F0 is strong_SG-embedding implies F is strong_SG-embedding) & (F0 is isomorphism implies F is isomorphism)

    proof

      let G1,G2 be _Graph, E1,E2 be set;

      let G3 be reverseEdgeDirections of G1, E1;

      let G4 be reverseEdgeDirections of G2, E2;

      let F0 be PGraphMapping of G1, G2;

      consider F be PGraphMapping of G3, G4 such that

       A1: F = F0 and F0 is non empty implies F is non empty and

       A2: F0 is total implies F is total and

       A3: F0 is onto implies F is onto and

       A4: F0 is one-to-one implies F is one-to-one and F0 is semi-continuous implies F is semi-continuous and

       A5: F0 is continuous implies F is continuous by Th141;

      take F;

      thus F = F0 by A1;

      thus F0 is weak_SG-embedding implies F is weak_SG-embedding by A2, A4;

      thus F0 is strong_SG-embedding implies F is strong_SG-embedding by A2, A4, A5;

      thus F0 is isomorphism implies F is isomorphism by A2, A3, A4;

    end;

    theorem :: GLIB_010:143

    

     Th143: for G1 be _Graph, G2 be G1 -isomorphic _Graph, E1,E2 be set holds for G3 be reverseEdgeDirections of G1, E1 holds for G4 be reverseEdgeDirections of G2, E2 holds G4 is G3 -isomorphic

    proof

      let G1 be _Graph, G2 be G1 -isomorphic _Graph, E1,E2 be set;

      let G3 be reverseEdgeDirections of G1, E1;

      let G4 be reverseEdgeDirections of G2, E2;

      consider F0 be PGraphMapping of G1, G2 such that

       A1: F0 is isomorphism by Def23;

      consider F be PGraphMapping of G3, G4 such that F = F0 and F0 is weak_SG-embedding implies F is weak_SG-embedding and F0 is strong_SG-embedding implies F is strong_SG-embedding and

       A2: F0 is isomorphism implies F is isomorphism by Th142;

      thus thesis by A1, A2;

    end;

    theorem :: GLIB_010:144

    

     Th144: for G3,G4 be _Graph, V1,V2 be set holds for G1 be addVertices of G3, V1, G2 be addVertices of G4, V2 holds for F0 be PGraphMapping of G3, G4, f be one-to-one Function st ( dom f) = (V1 \ ( the_Vertices_of G3)) & ( rng f) = (V2 \ ( the_Vertices_of G4)) holds ex F be PGraphMapping of G1, G2 st F = [((F0 _V ) +* f), (F0 _E )] & (F0 is non empty implies F is non empty) & (F0 is total implies F is total) & (F0 is onto implies F is onto) & (F0 is one-to-one implies F is one-to-one) & (F0 is directed implies F is directed) & (F0 is semi-continuous implies F is semi-continuous) & (F0 is continuous implies F is continuous) & (F0 is semi-Dcontinuous implies F is semi-Dcontinuous) & (F0 is Dcontinuous implies F is Dcontinuous)

    proof

      let G3,G4 be _Graph, V1,V2 be set;

      let G1 be addVertices of G3, V1, G2 be addVertices of G4, V2;

      let F0 be PGraphMapping of G3, G4, f be one-to-one Function;

      assume

       A1: ( dom f) = (V1 \ ( the_Vertices_of G3)) & ( rng f) = (V2 \ ( the_Vertices_of G4));

      set h = ((F0 _V ) +* f);

      

       A2: ( dom h) = (( dom (F0 _V )) \/ (V1 \ ( the_Vertices_of G3))) by A1, FUNCT_4:def 1;

      ( dom h) c= (( the_Vertices_of G3) \/ V1) by A2, XBOOLE_1: 13;

      then

       A3: ( dom h) c= ( the_Vertices_of G1) by GLIB_006:def 10;

      (( rng (F0 _V )) \/ ( rng f)) c= (( the_Vertices_of G4) \/ V2) by A1, XBOOLE_1: 13;

      then

       A4: (( rng (F0 _V )) \/ ( rng f)) c= ( the_Vertices_of G2) by GLIB_006:def 10;

      ( rng h) c= (( rng (F0 _V )) \/ ( rng f)) by FUNCT_4: 17;

      then ( rng h) c= ( the_Vertices_of G2) by A4, XBOOLE_1: 1;

      then

      reconsider h as PartFunc of ( the_Vertices_of G1), ( the_Vertices_of G2) by A3, RELSET_1: 4;

      ( the_Edges_of G1) = ( the_Edges_of G3) & ( the_Edges_of G2) = ( the_Edges_of G4) by GLIB_006:def 10;

      then

      reconsider g = (F0 _E ) as PartFunc of ( the_Edges_of G1), ( the_Edges_of G2);

      

       A5: (( dom f) /\ ( the_Vertices_of G3)) = {} by A1, XBOOLE_1: 79, XBOOLE_0:def 7;

      (( dom (F0 _V )) /\ ( dom f)) c= (( dom f) /\ ( the_Vertices_of G3)) by XBOOLE_1: 26;

      then

       A6: ( dom (F0 _V )) misses ( dom f) by A5, XBOOLE_1: 3, XBOOLE_0:def 7;

      

       A7: (( rng f) /\ ( the_Vertices_of G4)) = {} by A1, XBOOLE_1: 79, XBOOLE_0:def 7;

      (( rng (F0 _V )) /\ ( rng f)) c= (( rng f) /\ ( the_Vertices_of G4)) by XBOOLE_1: 26;

      then

       A8: ( rng (F0 _V )) misses ( rng f) by A7, XBOOLE_1: 3, XBOOLE_0:def 7;

      

       A9: (( dom h) /\ ( the_Vertices_of G3)) = ((( dom (F0 _V )) \/ ( dom f)) /\ ( the_Vertices_of G3)) by FUNCT_4:def 1

      .= ((( dom (F0 _V )) /\ ( the_Vertices_of G3)) \/ (( dom f) /\ ( the_Vertices_of G3))) by XBOOLE_1: 23

      .= ( dom (F0 _V )) by A5, XBOOLE_1: 28;

      now

        hereby

          let e be object;

          assume

           A10: e in ( dom g);

          (( the_Source_of G1) . e) = (( the_Source_of G3) . e) & (( the_Target_of G1) . e) = (( the_Target_of G3) . e) by GLIB_006:def 10;

          then

           A11: (( the_Source_of G1) . e) in ( dom (F0 _V )) & (( the_Target_of G1) . e) in ( dom (F0 _V )) by A10, Th5;

          ( dom (F0 _V )) c= ( dom h) by FUNCT_4: 10;

          hence (( the_Source_of G1) . e) in ( dom h) & (( the_Target_of G1) . e) in ( dom h) by A11;

        end;

        let e,v,w be object;

        assume

         A12: e in ( dom g) & v in ( dom h) & w in ( dom h) & e Joins (v,w,G1);

        

         A13: e Joins (v,w,G3) by A12, GLIB_009: 41;

        then

         A14: v in ( the_Vertices_of G3) & w in ( the_Vertices_of G3) by GLIB_000: 13;

        then v in ( dom (F0 _V )) & w in ( dom (F0 _V )) by A12, A9, XBOOLE_0:def 4;

        then ((F0 _E ) . e) Joins (((F0 _V ) . v),((F0 _V ) . w),G4) by A12, A13, Th4;

        then

         A15: (g . e) Joins (((F0 _V ) . v),((F0 _V ) . w),G2) by GLIB_009: 41;

         not v in ( dom f) & not w in ( dom f) by A1, A14, XBOOLE_0:def 5;

        then (h . v) = ((F0 _V ) . v) & (h . w) = ((F0 _V ) . w) by FUNCT_4: 11;

        hence (g . e) Joins ((h . v),(h . w),G2) by A15;

      end;

      then

      reconsider F = [h, g] as PGraphMapping of G1, G2 by Th8;

      take F;

      thus F = [((F0 _V ) +* f), (F0 _E )];

      thus F0 is non empty implies F is non empty by FUNCT_4: 10, XBOOLE_1: 3;

      thus F0 is total implies F is total

      proof

        assume F0 is total;

        then

         A16: ( dom (F0 _V )) = ( the_Vertices_of G3) & ( dom (F0 _E )) = ( the_Edges_of G3);

        

        then ( dom h) = (( the_Vertices_of G3) \/ (V1 \ ( the_Vertices_of G3))) by A1, FUNCT_4:def 1

        .= (( the_Vertices_of G3) \/ V1) by XBOOLE_1: 39

        .= ( the_Vertices_of G1) by GLIB_006:def 10;

        hence thesis by A16, GLIB_006:def 10;

      end;

      thus F0 is onto implies F is onto

      proof

        assume F0 is onto;

        then

         A17: ( rng (F0 _V )) = ( the_Vertices_of G4) & ( rng (F0 _E )) = ( the_Edges_of G4);

        ( rng h) = (( rng (F0 _V )) \/ ( rng f)) by A6, NECKLACE: 6

        .= (( the_Vertices_of G4) \/ V2) by A1, A17, XBOOLE_1: 39

        .= ( the_Vertices_of G2) by GLIB_006:def 10;

        hence thesis by A17, GLIB_006:def 10;

      end;

      thus F0 is one-to-one implies F is one-to-one by A8, FUNCT_4: 92;

      thus F0 is directed implies F is directed

      proof

        assume

         A18: F0 is directed;

        now

          let e,v,w be object;

          assume

           A19: e in ( dom g) & v in ( dom h) & w in ( dom h) & e DJoins (v,w,G1);

          

           A20: e DJoins (v,w,G3) by A19, GLIB_009: 41;

          then e Joins (v,w,G3) by GLIB_000: 16;

          then

           A21: v in ( the_Vertices_of G3) & w in ( the_Vertices_of G3) by GLIB_000: 13;

          then v in ( dom (F0 _V )) & w in ( dom (F0 _V )) by A19, A9, XBOOLE_0:def 4;

          then ((F0 _E ) . e) DJoins (((F0 _V ) . v),((F0 _V ) . w),G4) by A18, A19, A20;

          then

           A22: (g . e) DJoins (((F0 _V ) . v),((F0 _V ) . w),G2) by GLIB_009: 41;

           not v in ( dom f) & not w in ( dom f) by A1, A21, XBOOLE_0:def 5;

          then (h . v) = ((F0 _V ) . v) & (h . w) = ((F0 _V ) . w) by FUNCT_4: 11;

          hence (g . e) DJoins ((h . v),(h . w),G2) by A22;

        end;

        hence thesis;

      end;

      thus F0 is semi-continuous implies F is semi-continuous

      proof

        assume

         A23: F0 is semi-continuous;

        now

          let e,v,w be object;

          assume

           A24: e in ( dom g) & v in ( dom h) & w in ( dom h) & (g . e) Joins ((h . v),(h . w),G2);

          then

           A25: ((F0 _E ) . e) Joins ((h . v),(h . w),G4) by GLIB_009: 41;

          then (h . v) in ( the_Vertices_of G4) & (h . w) in ( the_Vertices_of G4) by GLIB_000: 13;

          then

           A26: not (h . v) in ( rng f) & not (h . w) in ( rng f) by A7, XBOOLE_0:def 4;

          

           A27: not v in ( dom f) & not w in ( dom f)

          proof

            assume v in ( dom f) or w in ( dom f);

            per cases ;

              suppose v in ( dom f);

              then (f . v) in ( rng f) & (h . v) = (f . v) by FUNCT_1: 3, FUNCT_4: 13;

              hence contradiction by A26;

            end;

              suppose w in ( dom f);

              then (f . w) in ( rng f) & (h . w) = (f . w) by FUNCT_1: 3, FUNCT_4: 13;

              hence contradiction by A26;

            end;

          end;

          v in (( dom (F0 _V )) \/ ( dom f)) & w in (( dom (F0 _V )) \/ ( dom f)) by A24, FUNCT_4:def 1;

          then

           A28: v in ( dom (F0 _V )) & w in ( dom (F0 _V )) by A27, XBOOLE_0:def 3;

          ((F0 _V ) . v) = (h . v) & ((F0 _V ) . w) = (h . w) by A27, FUNCT_4: 11;

          then ((F0 _E ) . e) Joins (((F0 _V ) . v),((F0 _V ) . w),G4) by A25;

          then

           A29: e Joins (v,w,G3) by A23, A24, A28;

          v is set & w is set by TARSKI: 1;

          hence e Joins (v,w,G1) by A29, GLIB_009: 41;

        end;

        hence thesis;

      end;

      thus F0 is continuous implies F is continuous

      proof

        assume

         A30: F0 is continuous;

        now

          let e9,v,w be object;

          assume

           A31: v in ( dom h) & w in ( dom h) & e9 Joins ((h . v),(h . w),G2);

          then

           A32: e9 Joins ((h . v),(h . w),G4) by GLIB_009: 41;

          then (h . v) in ( the_Vertices_of G4) & (h . w) in ( the_Vertices_of G4) by GLIB_000: 13;

          then

           A33: not (h . v) in ( rng f) & not (h . w) in ( rng f) by A7, XBOOLE_0:def 4;

          

           A34: not v in ( dom f) & not w in ( dom f)

          proof

            assume v in ( dom f) or w in ( dom f);

            per cases ;

              suppose v in ( dom f);

              then (f . v) in ( rng f) & (h . v) = (f . v) by FUNCT_1: 3, FUNCT_4: 13;

              hence contradiction by A33;

            end;

              suppose w in ( dom f);

              then (f . w) in ( rng f) & (h . w) = (f . w) by FUNCT_1: 3, FUNCT_4: 13;

              hence contradiction by A33;

            end;

          end;

          v in (( dom (F0 _V )) \/ ( dom f)) & w in (( dom (F0 _V )) \/ ( dom f)) by A31, FUNCT_4:def 1;

          then

           A35: v in ( dom (F0 _V )) & w in ( dom (F0 _V )) by A34, XBOOLE_0:def 3;

          ((F0 _V ) . v) = (h . v) & ((F0 _V ) . w) = (h . w) by A34, FUNCT_4: 11;

          then

          consider e be object such that

           A36: e Joins (v,w,G3) & e in ( dom (F _E )) & ((F _E ) . e) = e9 by A30, A32, A35;

          take e;

          v is set & w is set by TARSKI: 1;

          hence e Joins (v,w,G1) by A36, GLIB_009: 41;

          thus e in ( dom g) & (g . e) = e9 by A36;

        end;

        hence thesis;

      end;

      thus F0 is semi-Dcontinuous implies F is semi-Dcontinuous

      proof

        assume

         A37: F0 is semi-Dcontinuous;

        now

          let e,v,w be object;

          assume

           A38: e in ( dom g) & v in ( dom h) & w in ( dom h) & (g . e) DJoins ((h . v),(h . w),G2);

          then

           A39: ((F0 _E ) . e) DJoins ((h . v),(h . w),G4) by GLIB_009: 41;

          then ((F0 _E ) . e) Joins ((h . v),(h . w),G4) by GLIB_000: 16;

          then (h . v) in ( the_Vertices_of G4) & (h . w) in ( the_Vertices_of G4) by GLIB_000: 13;

          then

           A40: not (h . v) in ( rng f) & not (h . w) in ( rng f) by A7, XBOOLE_0:def 4;

          

           A41: not v in ( dom f) & not w in ( dom f)

          proof

            assume v in ( dom f) or w in ( dom f);

            per cases ;

              suppose v in ( dom f);

              then (f . v) in ( rng f) & (h . v) = (f . v) by FUNCT_1: 3, FUNCT_4: 13;

              hence contradiction by A40;

            end;

              suppose w in ( dom f);

              then (f . w) in ( rng f) & (h . w) = (f . w) by FUNCT_1: 3, FUNCT_4: 13;

              hence contradiction by A40;

            end;

          end;

          v in (( dom (F0 _V )) \/ ( dom f)) & w in (( dom (F0 _V )) \/ ( dom f)) by A38, FUNCT_4:def 1;

          then

           A42: v in ( dom (F0 _V )) & w in ( dom (F0 _V )) by A41, XBOOLE_0:def 3;

          ((F0 _V ) . v) = (h . v) & ((F0 _V ) . w) = (h . w) by A41, FUNCT_4: 11;

          then ((F0 _E ) . e) DJoins (((F0 _V ) . v),((F0 _V ) . w),G4) by A39;

          then

           A43: e DJoins (v,w,G3) by A37, A38, A42;

          v is set & w is set by TARSKI: 1;

          hence e DJoins (v,w,G1) by A43, GLIB_009: 41;

        end;

        hence thesis;

      end;

      thus F0 is Dcontinuous implies F is Dcontinuous

      proof

        assume

         A44: F0 is Dcontinuous;

        now

          let e9,v,w be object;

          assume

           A45: v in ( dom h) & w in ( dom h) & e9 DJoins ((h . v),(h . w),G2);

          then

           A46: e9 DJoins ((h . v),(h . w),G4) by GLIB_009: 41;

          then e9 Joins ((h . v),(h . w),G4) by GLIB_000: 16;

          then (h . v) in ( the_Vertices_of G4) & (h . w) in ( the_Vertices_of G4) by GLIB_000: 13;

          then

           A47: not (h . v) in ( rng f) & not (h . w) in ( rng f) by A7, XBOOLE_0:def 4;

          

           A48: not v in ( dom f) & not w in ( dom f)

          proof

            assume v in ( dom f) or w in ( dom f);

            per cases ;

              suppose v in ( dom f);

              then (f . v) in ( rng f) & (h . v) = (f . v) by FUNCT_1: 3, FUNCT_4: 13;

              hence contradiction by A47;

            end;

              suppose w in ( dom f);

              then (f . w) in ( rng f) & (h . w) = (f . w) by FUNCT_1: 3, FUNCT_4: 13;

              hence contradiction by A47;

            end;

          end;

          v in (( dom (F0 _V )) \/ ( dom f)) & w in (( dom (F0 _V )) \/ ( dom f)) by A45, FUNCT_4:def 1;

          then

           A49: v in ( dom (F0 _V )) & w in ( dom (F0 _V )) by A48, XBOOLE_0:def 3;

          ((F0 _V ) . v) = (h . v) & ((F0 _V ) . w) = (h . w) by A48, FUNCT_4: 11;

          then

          consider e be object such that

           A50: e DJoins (v,w,G3) & e in ( dom (F _E )) & ((F _E ) . e) = e9 by A44, A46, A49;

          take e;

          v is set & w is set by TARSKI: 1;

          hence e DJoins (v,w,G1) by A50, GLIB_009: 41;

          thus e in ( dom g) & (g . e) = e9 by A50;

        end;

        hence thesis;

      end;

    end;

    theorem :: GLIB_010:145

    

     Th145: for G3,G4 be _Graph, V1,V2 be set holds for G1 be addVertices of G3, V1, G2 be addVertices of G4, V2 holds for F0 be PGraphMapping of G3, G4, f be one-to-one Function st ( dom f) = (V1 \ ( the_Vertices_of G3)) & ( rng f) = (V2 \ ( the_Vertices_of G4)) holds ex F be PGraphMapping of G1, G2 st F = [((F0 _V ) +* f), (F0 _E )] & (F0 is weak_SG-embedding implies F is weak_SG-embedding) & (F0 is strong_SG-embedding implies F is strong_SG-embedding) & (F0 is isomorphism implies F is isomorphism) & (F0 is Disomorphism implies F is Disomorphism)

    proof

      let G3,G4 be _Graph, V1,V2 be set;

      let G1 be addVertices of G3, V1, G2 be addVertices of G4, V2;

      let F0 be PGraphMapping of G3, G4, f be one-to-one Function;

      assume ( dom f) = (V1 \ ( the_Vertices_of G3)) & ( rng f) = (V2 \ ( the_Vertices_of G4));

      then

      consider F be PGraphMapping of G1, G2 such that

       A1: F = [((F0 _V ) +* f), (F0 _E )] and F0 is non empty implies F is non empty and

       A2: F0 is total implies F is total and

       A3: F0 is onto implies F is onto and

       A4: F0 is one-to-one implies F is one-to-one and

       A5: F0 is directed implies F is directed and F0 is semi-continuous implies F is semi-continuous and

       A6: F0 is continuous implies F is continuous and F0 is semi-Dcontinuous implies F is semi-Dcontinuous and F0 is Dcontinuous implies F is Dcontinuous by Th144;

      take F;

      thus F = [((F0 _V ) +* f), (F0 _E )] by A1;

      thus F0 is weak_SG-embedding implies F is weak_SG-embedding by A2, A4;

      thus F0 is strong_SG-embedding implies F is strong_SG-embedding by A2, A4, A6;

      thus F0 is isomorphism implies F is isomorphism by A2, A3, A4;

      thus F0 is Disomorphism implies F is Disomorphism by A2, A3, A4, A5;

    end;

    theorem :: GLIB_010:146

    

     Th146: for G3 be _Graph, G4 be G3 -isomorphic _Graph, V1,V2 be set holds for G1 be addVertices of G3, V1, G2 be addVertices of G4, V2 st ( card (V1 \ ( the_Vertices_of G3))) = ( card (V2 \ ( the_Vertices_of G4))) holds G2 is G1 -isomorphic

    proof

      let G3 be _Graph, G4 be G3 -isomorphic _Graph, V1,V2 be set;

      let G1 be addVertices of G3, V1, G2 be addVertices of G4, V2;

      assume ( card (V1 \ ( the_Vertices_of G3))) = ( card (V2 \ ( the_Vertices_of G4)));

      then

      consider f be Function such that

       A1: f is one-to-one & ( dom f) = (V1 \ ( the_Vertices_of G3)) & ( rng f) = (V2 \ ( the_Vertices_of G4)) by CARD_1: 5, WELLORD2:def 4;

      reconsider f as one-to-one Function by A1;

      consider F0 be PGraphMapping of G3, G4 such that

       A2: F0 is isomorphism by Def23;

      consider F be PGraphMapping of G1, G2 such that F = [((F0 _V ) +* f), (F0 _E )] and F0 is weak_SG-embedding implies F is weak_SG-embedding and F0 is strong_SG-embedding implies F is strong_SG-embedding and

       A3: F0 is isomorphism implies F is isomorphism and F0 is Disomorphism implies F is Disomorphism by A1, Th145;

      thus thesis by A2, A3;

    end;

    theorem :: GLIB_010:147

    

     Th147: for G3 be _Graph, G4 be G3 -Disomorphic _Graph, V1,V2 be set holds for G1 be addVertices of G3, V1, G2 be addVertices of G4, V2 st ( card (V1 \ ( the_Vertices_of G3))) = ( card (V2 \ ( the_Vertices_of G4))) holds G2 is G1 -Disomorphic

    proof

      let G3 be _Graph, G4 be G3 -Disomorphic _Graph, V1,V2 be set;

      let G1 be addVertices of G3, V1, G2 be addVertices of G4, V2;

      assume ( card (V1 \ ( the_Vertices_of G3))) = ( card (V2 \ ( the_Vertices_of G4)));

      then

      consider f be Function such that

       A1: f is one-to-one & ( dom f) = (V1 \ ( the_Vertices_of G3)) & ( rng f) = (V2 \ ( the_Vertices_of G4)) by CARD_1: 5, WELLORD2:def 4;

      reconsider f as one-to-one Function by A1;

      consider F0 be PGraphMapping of G3, G4 such that

       A2: F0 is Disomorphism by Def24;

      consider F be PGraphMapping of G1, G2 such that F = [((F0 _V ) +* f), (F0 _E )] and F0 is weak_SG-embedding implies F is weak_SG-embedding and F0 is strong_SG-embedding implies F is strong_SG-embedding and F0 is isomorphism implies F is isomorphism and

       A3: F0 is Disomorphism implies F is Disomorphism by A1, Th145;

      thus thesis by A2, A3;

    end;

    theorem :: GLIB_010:148

    

     Th148: for G3,G4 be _Graph, v1,v2 be object holds for G1 be addVertex of G3, v1, G2 be addVertex of G4, v2 holds for F0 be PGraphMapping of G3, G4 st not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4) holds ex F be PGraphMapping of G1, G2 st F = [((F0 _V ) +* (v1 .--> v2)), (F0 _E )] & (F0 is total implies F is total) & (F0 is onto implies F is onto) & (F0 is one-to-one implies F is one-to-one) & (F0 is directed implies F is directed) & (F0 is semi-continuous implies F is semi-continuous) & (F0 is continuous implies F is continuous) & (F0 is semi-Dcontinuous implies F is semi-Dcontinuous) & (F0 is Dcontinuous implies F is Dcontinuous)

    proof

      let G3,G4 be _Graph, v1,v2 be object;

      let G1 be addVertex of G3, v1, G2 be addVertex of G4, v2;

      let F0 be PGraphMapping of G3, G4;

      assume

       A1: not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4);

      set f = (v1 .--> v2);

      

       A2: ( dom f) = ( dom ( {v1} --> v2)) by FUNCOP_1:def 9

      .= ( {v1} \ ( the_Vertices_of G3)) by A1, ZFMISC_1: 59;

      v1 is set & v2 is set by TARSKI: 1;

      

      then ( rng f) = {v2} by FUNCOP_1: 88

      .= ( {v2} \ ( the_Vertices_of G4)) by A1, ZFMISC_1: 59;

      then

      consider F be PGraphMapping of G1, G2 such that

       A3: F = [((F0 _V ) +* f), (F0 _E )] & (F0 is non empty implies F is non empty) & (F0 is total implies F is total) & (F0 is onto implies F is onto) & (F0 is one-to-one implies F is one-to-one) & (F0 is directed implies F is directed) & (F0 is semi-continuous implies F is semi-continuous) & (F0 is continuous implies F is continuous) & (F0 is semi-Dcontinuous implies F is semi-Dcontinuous) & (F0 is Dcontinuous implies F is Dcontinuous) by A2, Th144;

      take F;

      thus thesis by A3;

    end;

    theorem :: GLIB_010:149

    for G3,G4 be _Graph, v1,v2 be object holds for G1 be addVertex of G3, v1, G2 be addVertex of G4, v2 holds for F0 be PGraphMapping of G3, G4 st not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4) holds ex F be PGraphMapping of G1, G2 st F = [((F0 _V ) +* (v1 .--> v2)), (F0 _E )] & (F0 is weak_SG-embedding implies F is weak_SG-embedding) & (F0 is strong_SG-embedding implies F is strong_SG-embedding) & (F0 is isomorphism implies F is isomorphism) & (F0 is Disomorphism implies F is Disomorphism)

    proof

      let G3,G4 be _Graph, v1,v2 be object;

      let G1 be addVertex of G3, v1, G2 be addVertex of G4, v2;

      let F0 be PGraphMapping of G3, G4;

      assume not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4);

      then

      consider F be PGraphMapping of G1, G2 such that

       A1: F = [((F0 _V ) +* (v1 .--> v2)), (F0 _E )] and

       A2: F0 is total implies F is total and

       A3: F0 is onto implies F is onto and

       A4: F0 is one-to-one implies F is one-to-one and

       A5: F0 is directed implies F is directed and F0 is semi-continuous implies F is semi-continuous and

       A6: F0 is continuous implies F is continuous and F0 is semi-Dcontinuous implies F is semi-Dcontinuous and F0 is Dcontinuous implies F is Dcontinuous by Th148;

      take F;

      thus F = [((F0 _V ) +* (v1 .--> v2)), (F0 _E )] by A1;

      thus F0 is weak_SG-embedding implies F is weak_SG-embedding by A2, A4;

      thus F0 is strong_SG-embedding implies F is strong_SG-embedding by A2, A4, A6;

      thus F0 is isomorphism implies F is isomorphism by A2, A3, A4;

      thus F0 is Disomorphism implies F is Disomorphism by A2, A3, A4, A5;

    end;

    theorem :: GLIB_010:150

    for G3 be _Graph, G4 be G3 -isomorphic _Graph, v1,v2 be object holds for G1 be addVertex of G3, v1, G2 be addVertex of G4, v2 st v1 in ( the_Vertices_of G3) iff v2 in ( the_Vertices_of G4) holds G2 is G1 -isomorphic

    proof

      let G3 be _Graph, G4 be G3 -isomorphic _Graph, v1,v2 be object;

      let G1 be addVertex of G3, v1, G2 be addVertex of G4, v2;

      assume v1 in ( the_Vertices_of G3) iff v2 in ( the_Vertices_of G4);

      per cases ;

        suppose v1 in ( the_Vertices_of G3) & v2 in ( the_Vertices_of G4);

        then ( {v1} \ ( the_Vertices_of G3)) = {} & ( {v2} \ ( the_Vertices_of G4)) = {} by ZFMISC_1: 60;

        then ( card ( {v1} \ ( the_Vertices_of G3))) = ( card ( {v2} \ ( the_Vertices_of G4)));

        hence thesis by Th146;

      end;

        suppose not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4);

        then ( {v1} \ ( the_Vertices_of G3)) = {v1} & ( {v2} \ ( the_Vertices_of G4)) = {v2} by ZFMISC_1: 59;

        then ( card ( {v1} \ ( the_Vertices_of G3))) = 1 & ( card ( {v2} \ ( the_Vertices_of G4))) = 1 by CARD_1: 30;

        hence thesis by Th146;

      end;

    end;

    theorem :: GLIB_010:151

    for G3 be _Graph, G4 be G3 -Disomorphic _Graph, v1,v2 be object holds for G1 be addVertex of G3, v1, G2 be addVertex of G4, v2 st v1 in ( the_Vertices_of G3) iff v2 in ( the_Vertices_of G4) holds G2 is G1 -Disomorphic

    proof

      let G3 be _Graph, G4 be G3 -Disomorphic _Graph, v1,v2 be object;

      let G1 be addVertex of G3, v1, G2 be addVertex of G4, v2;

      assume v1 in ( the_Vertices_of G3) iff v2 in ( the_Vertices_of G4);

      per cases ;

        suppose v1 in ( the_Vertices_of G3) & v2 in ( the_Vertices_of G4);

        then ( {v1} \ ( the_Vertices_of G3)) = {} & ( {v2} \ ( the_Vertices_of G4)) = {} by ZFMISC_1: 60;

        then ( card ( {v1} \ ( the_Vertices_of G3))) = ( card ( {v2} \ ( the_Vertices_of G4)));

        hence thesis by Th147;

      end;

        suppose not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4);

        then ( {v1} \ ( the_Vertices_of G3)) = {v1} & ( {v2} \ ( the_Vertices_of G4)) = {v2} by ZFMISC_1: 59;

        then ( card ( {v1} \ ( the_Vertices_of G3))) = 1 & ( card ( {v2} \ ( the_Vertices_of G4))) = 1 by CARD_1: 30;

        hence thesis by Th147;

      end;

    end;

    theorem :: GLIB_010:152

    

     Th152: for G3,G4 be _Graph, v1,v3 be Vertex of G3, v2,v4 be Vertex of G4 holds for e1,e2 be object holds for G1 be addEdge of G3, v1, e1, v3, G2 be addEdge of G4, v2, e2, v4 holds for F0 be PGraphMapping of G3, G4 st not e1 in ( the_Edges_of G3) & not e2 in ( the_Edges_of G4) & v1 in ( dom (F0 _V )) & v3 in ( dom (F0 _V )) & (((F0 _V ) . v1) = v2 & ((F0 _V ) . v3) = v4 or ((F0 _V ) . v1) = v4 & ((F0 _V ) . v3) = v2) holds ex F be PGraphMapping of G1, G2 st F = [(F0 _V ), ((F0 _E ) +* (e1 .--> e2))] & (F0 is total implies F is total) & (F0 is onto implies F is onto) & (F0 is one-to-one implies F is one-to-one)

    proof

      let G3,G4 be _Graph, v1,v3 be Vertex of G3, v2,v4 be Vertex of G4;

      let e1,e2 be object;

      let G1 be addEdge of G3, v1, e1, v3, G2 be addEdge of G4, v2, e2, v4;

      let F0 be PGraphMapping of G3, G4;

      

       A1: e1 is set & e2 is set by TARSKI: 1;

      assume that

       A2: not e1 in ( the_Edges_of G3) & not e2 in ( the_Edges_of G4) and

       A3: v1 in ( dom (F0 _V )) & v3 in ( dom (F0 _V )) and

       A4: ((F0 _V ) . v1) = v2 & ((F0 _V ) . v3) = v4 or ((F0 _V ) . v1) = v4 & ((F0 _V ) . v3) = v2;

      ( the_Vertices_of G1) = ( the_Vertices_of G3) & ( the_Vertices_of G2) = ( the_Vertices_of G4) by GLIB_006: 102;

      then

      reconsider f = (F0 _V ) as PartFunc of ( the_Vertices_of G1), ( the_Vertices_of G2);

      set g = ((F0 _E ) +* (e1 .--> e2));

      

       A5: ( dom g) = (( dom (F0 _E )) \/ ( dom (e1 .--> e2))) by FUNCT_4:def 1

      .= (( dom (F0 _E )) \/ ( dom ( {e1} --> e2))) by FUNCOP_1:def 9

      .= (( dom (F0 _E )) \/ {e1});

       not e1 in ( dom (F0 _E )) by A2;

      then ( dom (F0 _E )) misses {e1} by ZFMISC_1: 50;

      then ( dom (F0 _E )) misses ( dom ( {e1} --> e2));

      then

       A6: ( dom (F0 _E )) misses ( dom (e1 .--> e2)) by FUNCOP_1:def 9;

      ( dom g) c= (( the_Edges_of G3) \/ {e1}) by A5, XBOOLE_1: 9;

      then

       A7: ( dom g) c= ( the_Edges_of G1) by A2, GLIB_006:def 11;

       not e2 in ( rng (F0 _E )) by A2;

      then ( rng (F0 _E )) misses {e2} by ZFMISC_1: 50;

      then

       A8: ( rng (F0 _E )) misses ( rng (e1 .--> e2)) by A1, FUNCOP_1: 88;

      

       A9: ( rng g) = (( rng (F0 _E )) \/ ( rng (e1 .--> e2))) by A6, NECKLACE: 6

      .= (( rng (F0 _E )) \/ {e2}) by A1, FUNCOP_1: 88;

      ( rng g) c= (( the_Edges_of G4) \/ {e2}) by A9, XBOOLE_1: 9;

      then ( rng g) c= ( the_Edges_of G2) by A2, GLIB_006:def 11;

      then

      reconsider g as PartFunc of ( the_Edges_of G1), ( the_Edges_of G2) by A7, RELSET_1: 4;

      

       A10: (( dom g) /\ ( the_Edges_of G3)) = ((( dom (F0 _E )) /\ ( the_Edges_of G3)) \/ ( {e1} /\ ( the_Edges_of G3))) by A5, XBOOLE_1: 23

      .= (( dom (F0 _E )) \/ ( {e1} /\ ( the_Edges_of G3))) by XBOOLE_1: 28

      .= (( dom (F0 _E )) \/ {} ) by A2, ZFMISC_1: 50, XBOOLE_0:def 7;

      now

        hereby

          let e be object;

          assume

           A11: e in ( dom g);

          then

           A12: e Joins ((( the_Source_of G1) . e),(( the_Target_of G1) . e),G1) by GLIB_000:def 13;

          per cases by GLIB_006: 72;

            suppose

             A13: e Joins ((( the_Source_of G1) . e),(( the_Target_of G1) . e),G3);

            then

             A14: e in ( the_Edges_of G3) by GLIB_000:def 13;

            then e in ( dom (F0 _E )) by A10, A11, XBOOLE_0:def 4;

            then

             A15: (( the_Source_of G3) . e) in ( dom (F0 _V )) & (( the_Target_of G3) . e) in ( dom (F0 _V )) by Th5;

            e Joins ((( the_Source_of G3) . e),(( the_Target_of G3) . e),G3) by A14, GLIB_000:def 13;

            hence (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f) by A13, A15, GLIB_000: 15;

          end;

            suppose

             A16: not e in ( the_Edges_of G3);

            then e = e1 by A2, A12, GLIB_006: 106;

            then e DJoins (v1,v3,G1) by A16, GLIB_006: 105;

            hence (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f) by A3, GLIB_000:def 14;

          end;

        end;

        let e,v,w be object;

        assume

         A17: e in ( dom g) & v in ( dom f) & w in ( dom f);

        assume

         A18: e Joins (v,w,G1);

        per cases by GLIB_006: 72;

          suppose

           A19: e Joins (v,w,G3);

          then e in ( the_Edges_of G3) by GLIB_000:def 13;

          then

           A20: e in ( dom (F0 _E )) by A10, A17, XBOOLE_0:def 4;

           not e in ( dom (e1 .--> e2))

          proof

            assume e in ( dom (e1 .--> e2));

            then e in (( dom (F0 _E )) /\ ( dom (e1 .--> e2))) by A20, XBOOLE_0:def 4;

            hence contradiction by A6, XBOOLE_0:def 7;

          end;

          then (g . e) = ((F0 _E ) . e) by FUNCT_4: 11;

          then (g . e) Joins ((f . v),(f . w),G4) by A17, A19, A20, Th4;

          hence (g . e) Joins ((f . v),(f . w),G2) by GLIB_006: 70;

        end;

          suppose

           A21: not e in ( the_Edges_of G3);

          then

           A22: e = e1 by A2, A18, GLIB_006: 106;

          then e in {e1} by TARSKI:def 1;

          then e in ( dom ( {e1} --> e2));

          then

           A23: e in ( dom (e1 .--> e2)) by FUNCOP_1:def 9;

          

           A24: e2 = ((e1 .--> e2) . e) by A22, FUNCOP_1: 72

          .= (g . e) by A23, FUNCT_4: 13;

          e2 DJoins (v2,v4,G2) by A2, GLIB_006: 105;

          then (g . e) Joins (v2,v4,G2) by A24, GLIB_000: 16;

          then

           A25: (g . e) Joins (((F0 _V ) . v1),((F0 _V ) . v3),G2) by A4, GLIB_000: 14;

          v = v1 & w = v3 or v = v3 & w = v1 by A2, A18, A21, GLIB_006: 107;

          hence (g . e) Joins ((f . v),(f . w),G2) by A25, GLIB_000: 14;

        end;

      end;

      then

      reconsider F = [f, g] as PGraphMapping of G1, G2 by Th8;

      take F;

      thus F = [(F0 _V ), ((F0 _E ) +* (e1 .--> e2))];

      thus F0 is total implies F is total by A2, A5, GLIB_006:def 11;

      thus F0 is onto implies F is onto by A2, A9, GLIB_006:def 11;

      thus F0 is one-to-one implies F is one-to-one by A8, FUNCT_4: 92;

    end;

    theorem :: GLIB_010:153

    for G3,G4 be _Graph, v1,v3 be Vertex of G3, v2,v4 be Vertex of G4 holds for e1,e2 be object holds for G1 be addEdge of G3, v1, e1, v3, G2 be addEdge of G4, v2, e2, v4 holds for F0 be PGraphMapping of G3, G4 st not e1 in ( the_Edges_of G3) & not e2 in ( the_Edges_of G4) & v1 in ( dom (F0 _V )) & v3 in ( dom (F0 _V )) & (((F0 _V ) . v1) = v2 & ((F0 _V ) . v3) = v4 or ((F0 _V ) . v1) = v4 & ((F0 _V ) . v3) = v2) holds ex F be PGraphMapping of G1, G2 st F = [(F0 _V ), ((F0 _E ) +* (e1 .--> e2))] & (F0 is weak_SG-embedding implies F is weak_SG-embedding) & (F0 is isomorphism implies F is isomorphism)

    proof

      let G3,G4 be _Graph, v1,v3 be Vertex of G3, v2,v4 be Vertex of G4;

      let e1,e2 be object;

      let G1 be addEdge of G3, v1, e1, v3, G2 be addEdge of G4, v2, e2, v4;

      let F0 be PGraphMapping of G3, G4;

      assume not e1 in ( the_Edges_of G3) & not e2 in ( the_Edges_of G4) & v1 in ( dom (F0 _V )) & v3 in ( dom (F0 _V )) & (((F0 _V ) . v1) = v2 & ((F0 _V ) . v3) = v4 or ((F0 _V ) . v1) = v4 & ((F0 _V ) . v3) = v2);

      then

      consider F be PGraphMapping of G1, G2 such that

       A1: F = [(F0 _V ), ((F0 _E ) +* (e1 .--> e2))] and

       A2: F0 is total implies F is total and

       A3: F0 is onto implies F is onto and

       A4: F0 is one-to-one implies F is one-to-one by Th152;

      take F;

      thus F = [(F0 _V ), ((F0 _E ) +* (e1 .--> e2))] by A1;

      thus F0 is weak_SG-embedding implies F is weak_SG-embedding by A2, A4;

      thus F0 is isomorphism implies F is isomorphism by A2, A3, A4;

    end;

    theorem :: GLIB_010:154

    

     Th154: for G3,G4 be _Graph, v1,v3 be Vertex of G3, v2,v4 be Vertex of G4 holds for e1,e2 be object holds for G1 be addEdge of G3, v1, e1, v3, G2 be addEdge of G4, v2, e2, v4 holds for F0 be PGraphMapping of G3, G4 st not e1 in ( the_Edges_of G3) & not e2 in ( the_Edges_of G4) & v1 in ( dom (F0 _V )) & v3 in ( dom (F0 _V )) & ((F0 _V ) . v1) = v2 & ((F0 _V ) . v3) = v4 holds ex F be PGraphMapping of G1, G2 st F = [(F0 _V ), ((F0 _E ) +* (e1 .--> e2))] & (F0 is directed implies F is directed) & (F0 is Disomorphism implies F is Disomorphism)

    proof

      let G3,G4 be _Graph, v1,v3 be Vertex of G3, v2,v4 be Vertex of G4;

      let e1,e2 be object;

      let G1 be addEdge of G3, v1, e1, v3, G2 be addEdge of G4, v2, e2, v4;

      let F0 be PGraphMapping of G3, G4;

      assume that

       A1: not e1 in ( the_Edges_of G3) & not e2 in ( the_Edges_of G4) and

       A2: v1 in ( dom (F0 _V )) & v3 in ( dom (F0 _V )) & ((F0 _V ) . v1) = v2 & ((F0 _V ) . v3) = v4;

      consider F be PGraphMapping of G1, G2 such that

       A3: F = [(F0 _V ), ((F0 _E ) +* (e1 .--> e2))] and

       A4: F0 is total implies F is total and

       A5: F0 is onto implies F is onto and

       A6: F0 is one-to-one implies F is one-to-one by A1, A2, Th152;

      take F;

      thus F = [(F0 _V ), ((F0 _E ) +* (e1 .--> e2))] by A3;

      set f = (F _V ), g = (F _E );

      

       A7: ( dom g) = (( dom (F0 _E )) \/ ( dom (e1 .--> e2))) by A3, FUNCT_4:def 1

      .= (( dom (F0 _E )) \/ ( dom ( {e1} --> e2))) by FUNCOP_1:def 9

      .= (( dom (F0 _E )) \/ {e1});

       not e1 in ( dom (F0 _E )) by A1;

      then ( dom (F0 _E )) misses {e1} by ZFMISC_1: 50;

      then ( dom (F0 _E )) misses ( dom ( {e1} --> e2));

      then

       A8: ( dom (F0 _E )) misses ( dom (e1 .--> e2)) by FUNCOP_1:def 9;

      

       A9: (( dom g) /\ ( the_Edges_of G3)) = ((( dom (F0 _E )) /\ ( the_Edges_of G3)) \/ ( {e1} /\ ( the_Edges_of G3))) by A7, XBOOLE_1: 23

      .= (( dom (F0 _E )) \/ ( {e1} /\ ( the_Edges_of G3))) by XBOOLE_1: 28

      .= (( dom (F0 _E )) \/ {} ) by A1, ZFMISC_1: 50, XBOOLE_0:def 7;

      thus F0 is directed implies F is directed

      proof

        assume

         A10: F0 is directed;

        now

          let e,v,w be object;

          assume

           A11: e in ( dom (F _E )) & v in ( dom (F _V )) & w in ( dom (F _V ));

          assume

           A12: e DJoins (v,w,G1);

          then

           A13: e Joins (v,w,G1) by GLIB_000: 16;

          per cases by A12, GLIB_006: 71;

            suppose

             A14: e DJoins (v,w,G3);

            then e in ( the_Edges_of G3) by GLIB_000:def 14;

            then

             A15: e in ( dom (F0 _E )) by A9, A11, XBOOLE_0:def 4;

             not e in ( dom (e1 .--> e2))

            proof

              assume e in ( dom (e1 .--> e2));

              then e in (( dom (F0 _E )) /\ ( dom (e1 .--> e2))) by A15, XBOOLE_0:def 4;

              hence contradiction by A8, XBOOLE_0:def 7;

            end;

            then

             A16: (g . e) = ((F0 _E ) . e) by A3, FUNCT_4: 11;

            v in ( dom (F0 _V )) & w in ( dom (F0 _V )) by A3, A11;

            then (g . e) DJoins ((f . v),(f . w),G4) by A3, A10, A14, A15, A16;

            hence (g . e) DJoins ((f . v),(f . w),G2) by GLIB_006: 70;

          end;

            suppose not e in ( the_Edges_of G3);

            then

             A17: e = e1 by A1, A13, GLIB_006: 106;

            then e in {e1} by TARSKI:def 1;

            then e in ( dom ( {e1} --> e2));

            then

             A18: e in ( dom (e1 .--> e2)) by FUNCOP_1:def 9;

            

             A19: e2 = ((e1 .--> e2) . e) by A17, FUNCOP_1: 72

            .= (g . e) by A18, A3, FUNCT_4: 13;

            e2 DJoins (v2,v4,G2) by A1, GLIB_006: 105;

            then

             A20: (g . e) DJoins (((F0 _V ) . v1),((F0 _V ) . v3),G2) by A2, A19;

            e DJoins (v1,v3,G1) by A1, A17, GLIB_006: 105;

            then v1 = v & v3 = w by A12, GLIB_009: 6;

            hence (g . e) DJoins ((f . v),(f . w),G2) by A3, A20;

          end;

        end;

        hence thesis;

      end;

      hence F0 is Disomorphism implies F is Disomorphism by A4, A5, A6;

    end;

    theorem :: GLIB_010:155

    

     Th155: for G3,G4 be _Graph, v3 be Vertex of G3, v4 be Vertex of G4 holds for e1,e2,v1,v2 be object holds for G1 be addAdjVertex of G3, v1, e1, v3 holds for G2 be addAdjVertex of G4, v2, e2, v4 holds for F0 be PGraphMapping of G3, G4 st not e1 in ( the_Edges_of G3) & not e2 in ( the_Edges_of G4) & not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4) & v3 in ( dom (F0 _V )) & ((F0 _V ) . v3) = v4 holds ex F be PGraphMapping of G1, G2 st F = [((F0 _V ) +* (v1 .--> v2)), ((F0 _E ) +* (e1 .--> e2))] & (F0 is total implies F is total) & (F0 is onto implies F is onto) & (F0 is one-to-one implies F is one-to-one) & (F0 is directed implies F is directed)

    proof

      let G3,G4 be _Graph, v3 be Vertex of G3, v4 be Vertex of G4;

      let e1,e2,v1,v2 be object;

      let G1 be addAdjVertex of G3, v1, e1, v3, G2 be addAdjVertex of G4, v2, e2, v4;

      let F0 be PGraphMapping of G3, G4;

      assume that

       A1: not e1 in ( the_Edges_of G3) & not e2 in ( the_Edges_of G4) & not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4) and

       A2: v3 in ( dom (F0 _V )) & ((F0 _V ) . v3) = v4;

      consider G5 be addVertex of G3, v1 such that

       A3: G1 is addEdge of G5, v1, e1, v3 by A1, GLIB_006: 126;

      consider G6 be addVertex of G4, v2 such that

       A4: G2 is addEdge of G6, v2, e2, v4 by A1, GLIB_006: 126;

      consider F1 be PGraphMapping of G5, G6 such that

       A5: F1 = [((F0 _V ) +* (v1 .--> v2)), (F0 _E )] and

       A6: F0 is total implies F1 is total and

       A7: F0 is onto implies F1 is onto and

       A8: F0 is one-to-one implies F1 is one-to-one and

       A9: F0 is directed implies F1 is directed and F0 is semi-continuous implies F1 is semi-continuous and F0 is continuous implies F1 is continuous and F0 is semi-Dcontinuous implies F1 is semi-Dcontinuous and F0 is Dcontinuous implies F1 is Dcontinuous by A1, Th148;

      

       A10: v1 in ( dom (F1 _V )) & v3 in ( dom (F1 _V )) & ((F1 _V ) . v1) = v2 & ((F1 _V ) . v3) = v4

      proof

        v1 in {v1} by TARSKI:def 1;

        then v1 in ( dom ( {v1} --> v2));

        then

         A11: v1 in ( dom (v1 .--> v2)) by FUNCOP_1:def 9;

        hence v1 in ( dom (F1 _V )) by A5, FUNCT_4: 10, TARSKI:def 3;

        thus v3 in ( dom (F1 _V )) by A2, A5, FUNCT_4: 10, TARSKI:def 3;

        

        thus ((F1 _V ) . v1) = ((v1 .--> v2) . v1) by A5, A11, FUNCT_4: 13

        .= v2 by FUNCOP_1: 72;

        v3 <> v1 by A1;

        then not v3 in {v1} by TARSKI:def 1;

        then not v3 in ( dom (v1 .--> v2));

        hence ((F1 _V ) . v3) = v4 by A2, A5, FUNCT_4: 11;

      end;

      

       A12: not e1 in ( the_Edges_of G5) & not e2 in ( the_Edges_of G6) by A1, GLIB_006:def 10;

      v2 in ( rng (F1 _V )) & v4 in ( rng (F1 _V )) by A10, FUNCT_1: 3;

      then

       A13: v2 is Vertex of G6 & v4 is Vertex of G6;

      then

      consider F2 be PGraphMapping of G1, G2 such that

       A14: F2 = [(F1 _V ), ((F1 _E ) +* (e1 .--> e2))] and

       A15: F1 is total implies F2 is total and

       A16: F1 is onto implies F2 is onto and

       A17: F1 is one-to-one implies F2 is one-to-one by A3, A4, A10, A12, Th152;

      take F2;

      thus F2 = [((F0 _V ) +* (v1 .--> v2)), ((F0 _E ) +* (e1 .--> e2))] by A5, A14;

      thus F0 is total implies F2 is total by A6, A15;

      thus F0 is onto implies F2 is onto by A7, A16;

      thus F0 is one-to-one implies F2 is one-to-one by A8, A17;

      consider F3 be PGraphMapping of G1, G2 such that

       A18: F3 = [(F1 _V ), ((F1 _E ) +* (e1 .--> e2))] and

       A19: F1 is directed implies F3 is directed and F1 is Disomorphism implies F3 is Disomorphism by A3, A4, A10, A12, A13, Th154;

      thus F0 is directed implies F2 is directed by A9, A14, A18, A19;

    end;

    theorem :: GLIB_010:156

    for G3,G4 be _Graph, v3 be Vertex of G3, v4 be Vertex of G4 holds for e1,e2,v1,v2 be object holds for G1 be addAdjVertex of G3, v1, e1, v3 holds for G2 be addAdjVertex of G4, v2, e2, v4 holds for F0 be PGraphMapping of G3, G4 st not e1 in ( the_Edges_of G3) & not e2 in ( the_Edges_of G4) & not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4) & v3 in ( dom (F0 _V )) & ((F0 _V ) . v3) = v4 holds ex F be PGraphMapping of G1, G2 st F = [((F0 _V ) +* (v1 .--> v2)), ((F0 _E ) +* (e1 .--> e2))] & (F0 is weak_SG-embedding implies F is weak_SG-embedding) & (F0 is isomorphism implies F is isomorphism) & (F0 is Disomorphism implies F is Disomorphism)

    proof

      let G3,G4 be _Graph, v3 be Vertex of G3, v4 be Vertex of G4;

      let e1,e2,v1,v2 be object;

      let G1 be addAdjVertex of G3, v1, e1, v3, G2 be addAdjVertex of G4, v2, e2, v4;

      let F0 be PGraphMapping of G3, G4;

      assume not e1 in ( the_Edges_of G3) & not e2 in ( the_Edges_of G4) & not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4) & v3 in ( dom (F0 _V )) & ((F0 _V ) . v3) = v4;

      then

      consider F be PGraphMapping of G1, G2 such that

       A1: F = [((F0 _V ) +* (v1 .--> v2)), ((F0 _E ) +* (e1 .--> e2))] and

       A2: F0 is total implies F is total and

       A3: F0 is onto implies F is onto and

       A4: F0 is one-to-one implies F is one-to-one and

       A5: F0 is directed implies F is directed by Th155;

      take F;

      thus F = [((F0 _V ) +* (v1 .--> v2)), ((F0 _E ) +* (e1 .--> e2))] by A1;

      thus F0 is weak_SG-embedding implies F is weak_SG-embedding by A2, A4;

      thus F0 is isomorphism implies F is isomorphism by A2, A3, A4;

      thus F0 is Disomorphism implies F is Disomorphism by A2, A3, A4, A5;

    end;

    theorem :: GLIB_010:157

    

     Th157: for G3,G4 be _Graph, v3 be Vertex of G3, v4 be Vertex of G4 holds for e1,e2,v1,v2 be object holds for G1 be addAdjVertex of G3, v3, e1, v1 holds for G2 be addAdjVertex of G4, v4, e2, v2 holds for F0 be PGraphMapping of G3, G4 st not e1 in ( the_Edges_of G3) & not e2 in ( the_Edges_of G4) & not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4) & v3 in ( dom (F0 _V )) & ((F0 _V ) . v3) = v4 holds ex F be PGraphMapping of G1, G2 st F = [((F0 _V ) +* (v1 .--> v2)), ((F0 _E ) +* (e1 .--> e2))] & (F0 is total implies F is total) & (F0 is onto implies F is onto) & (F0 is one-to-one implies F is one-to-one) & (F0 is directed implies F is directed)

    proof

      let G3,G4 be _Graph, v3 be Vertex of G3, v4 be Vertex of G4;

      let e1,e2,v1,v2 be object;

      let G1 be addAdjVertex of G3, v3, e1, v1, G2 be addAdjVertex of G4, v4, e2, v2;

      let F0 be PGraphMapping of G3, G4;

      assume that

       A1: not e1 in ( the_Edges_of G3) & not e2 in ( the_Edges_of G4) & not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4) and

       A2: v3 in ( dom (F0 _V )) & ((F0 _V ) . v3) = v4;

      consider G5 be addVertex of G3, v1 such that

       A3: G1 is addEdge of G5, v3, e1, v1 by A1, GLIB_006: 125;

      consider G6 be addVertex of G4, v2 such that

       A4: G2 is addEdge of G6, v4, e2, v2 by A1, GLIB_006: 125;

      consider F1 be PGraphMapping of G5, G6 such that

       A5: F1 = [((F0 _V ) +* (v1 .--> v2)), (F0 _E )] and

       A6: F0 is total implies F1 is total and

       A7: F0 is onto implies F1 is onto and

       A8: F0 is one-to-one implies F1 is one-to-one and

       A9: F0 is directed implies F1 is directed and F0 is semi-continuous implies F1 is semi-continuous and F0 is continuous implies F1 is continuous and F0 is semi-Dcontinuous implies F1 is semi-Dcontinuous and F0 is Dcontinuous implies F1 is Dcontinuous by A1, Th148;

      

       A10: v1 in ( dom (F1 _V )) & v3 in ( dom (F1 _V )) & ((F1 _V ) . v1) = v2 & ((F1 _V ) . v3) = v4

      proof

        v1 in {v1} by TARSKI:def 1;

        then v1 in ( dom ( {v1} --> v2));

        then

         A11: v1 in ( dom (v1 .--> v2)) by FUNCOP_1:def 9;

        hence v1 in ( dom (F1 _V )) by A5, FUNCT_4: 10, TARSKI:def 3;

        thus v3 in ( dom (F1 _V )) by A2, A5, FUNCT_4: 10, TARSKI:def 3;

        

        thus ((F1 _V ) . v1) = ((v1 .--> v2) . v1) by A5, A11, FUNCT_4: 13

        .= v2 by FUNCOP_1: 72;

        v3 <> v1 by A1;

        then not v3 in {v1} by TARSKI:def 1;

        then not v3 in ( dom (v1 .--> v2));

        hence ((F1 _V ) . v3) = v4 by A2, A5, FUNCT_4: 11;

      end;

      

       A12: not e1 in ( the_Edges_of G5) & not e2 in ( the_Edges_of G6) by A1, GLIB_006:def 10;

      v2 in ( rng (F1 _V )) & v4 in ( rng (F1 _V )) by A10, FUNCT_1: 3;

      then

       A13: v2 is Vertex of G6 & v4 is Vertex of G6;

      then

      consider F2 be PGraphMapping of G1, G2 such that

       A14: F2 = [(F1 _V ), ((F1 _E ) +* (e1 .--> e2))] and

       A15: F1 is total implies F2 is total and

       A16: F1 is onto implies F2 is onto and

       A17: F1 is one-to-one implies F2 is one-to-one by A3, A4, A10, A12, Th152;

      take F2;

      thus F2 = [((F0 _V ) +* (v1 .--> v2)), ((F0 _E ) +* (e1 .--> e2))] by A5, A14;

      thus F0 is total implies F2 is total by A6, A15;

      thus F0 is onto implies F2 is onto by A7, A16;

      thus F0 is one-to-one implies F2 is one-to-one by A8, A17;

      consider F3 be PGraphMapping of G1, G2 such that

       A18: F3 = [(F1 _V ), ((F1 _E ) +* (e1 .--> e2))] and

       A19: F1 is directed implies F3 is directed and F1 is Disomorphism implies F3 is Disomorphism by A3, A4, A10, A12, A13, Th154;

      thus F0 is directed implies F2 is directed by A9, A14, A18, A19;

    end;

    theorem :: GLIB_010:158

    for G3,G4 be _Graph, v3 be Vertex of G3, v4 be Vertex of G4 holds for e1,e2,v1,v2 be object holds for G1 be addAdjVertex of G3, v3, e1, v1 holds for G2 be addAdjVertex of G4, v4, e2, v2 holds for F0 be PGraphMapping of G3, G4 st not e1 in ( the_Edges_of G3) & not e2 in ( the_Edges_of G4) & not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4) & v3 in ( dom (F0 _V )) & ((F0 _V ) . v3) = v4 holds ex F be PGraphMapping of G1, G2 st F = [((F0 _V ) +* (v1 .--> v2)), ((F0 _E ) +* (e1 .--> e2))] & (F0 is weak_SG-embedding implies F is weak_SG-embedding) & (F0 is isomorphism implies F is isomorphism) & (F0 is Disomorphism implies F is Disomorphism)

    proof

      let G3,G4 be _Graph, v3 be Vertex of G3, v4 be Vertex of G4;

      let e1,e2,v1,v2 be object;

      let G1 be addAdjVertex of G3, v3, e1, v1, G2 be addAdjVertex of G4, v4, e2, v2;

      let F0 be PGraphMapping of G3, G4;

      assume not e1 in ( the_Edges_of G3) & not e2 in ( the_Edges_of G4) & not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4) & v3 in ( dom (F0 _V )) & ((F0 _V ) . v3) = v4;

      then

      consider F be PGraphMapping of G1, G2 such that

       A1: F = [((F0 _V ) +* (v1 .--> v2)), ((F0 _E ) +* (e1 .--> e2))] and

       A2: F0 is total implies F is total and

       A3: F0 is onto implies F is onto and

       A4: F0 is one-to-one implies F is one-to-one and

       A5: F0 is directed implies F is directed by Th157;

      take F;

      thus F = [((F0 _V ) +* (v1 .--> v2)), ((F0 _E ) +* (e1 .--> e2))] by A1;

      thus F0 is weak_SG-embedding implies F is weak_SG-embedding by A2, A4;

      thus F0 is isomorphism implies F is isomorphism by A2, A3, A4;

      thus F0 is Disomorphism implies F is Disomorphism by A2, A3, A4, A5;

    end;

    theorem :: GLIB_010:159

    for G3,G4 be _Graph, v3 be Vertex of G3, v4 be Vertex of G4 holds for e1,e2,v1,v2 be object holds for G1 be addAdjVertex of G3, v1, e1, v3 holds for G2 be addAdjVertex of G4, v4, e2, v2 holds for F0 be PGraphMapping of G3, G4 st not e1 in ( the_Edges_of G3) & not e2 in ( the_Edges_of G4) & not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4) & v3 in ( dom (F0 _V )) & ((F0 _V ) . v3) = v4 holds ex F be PGraphMapping of G1, G2 st F = [((F0 _V ) +* (v1 .--> v2)), ((F0 _E ) +* (e1 .--> e2))] & (F0 is total implies F is total) & (F0 is onto implies F is onto) & (F0 is one-to-one implies F is one-to-one) & (F0 is weak_SG-embedding implies F is weak_SG-embedding) & (F0 is isomorphism implies F is isomorphism)

    proof

      let G3,G4 be _Graph, v3 be Vertex of G3, v4 be Vertex of G4;

      let e1,e2,v1,v2 be object;

      let G1 be addAdjVertex of G3, v1, e1, v3, G2 be addAdjVertex of G4, v4, e2, v2;

      let F0 be PGraphMapping of G3, G4;

      assume that

       A1: not e1 in ( the_Edges_of G3) & not e2 in ( the_Edges_of G4) & not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4) and

       A2: v3 in ( dom (F0 _V )) & ((F0 _V ) . v3) = v4;

      consider G5 be addVertex of G3, v1 such that

       A3: G1 is addEdge of G5, v1, e1, v3 by A1, GLIB_006: 126;

      consider G6 be addVertex of G4, v2 such that

       A4: G2 is addEdge of G6, v4, e2, v2 by A1, GLIB_006: 125;

      consider F1 be PGraphMapping of G5, G6 such that

       A5: F1 = [((F0 _V ) +* (v1 .--> v2)), (F0 _E )] and

       A6: F0 is total implies F1 is total and

       A7: F0 is onto implies F1 is onto and

       A8: F0 is one-to-one implies F1 is one-to-one and F0 is directed implies F1 is directed and F0 is semi-continuous implies F1 is semi-continuous and F0 is continuous implies F1 is continuous and F0 is semi-Dcontinuous implies F1 is semi-Dcontinuous and F0 is Dcontinuous implies F1 is Dcontinuous by A1, Th148;

      

       A9: v1 in ( dom (F1 _V )) & v3 in ( dom (F1 _V )) & ((F1 _V ) . v1) = v2 & ((F1 _V ) . v3) = v4

      proof

        v1 in {v1} by TARSKI:def 1;

        then v1 in ( dom ( {v1} --> v2));

        then

         A10: v1 in ( dom (v1 .--> v2)) by FUNCOP_1:def 9;

        hence v1 in ( dom (F1 _V )) by A5, FUNCT_4: 10, TARSKI:def 3;

        thus v3 in ( dom (F1 _V )) by A2, A5, FUNCT_4: 10, TARSKI:def 3;

        

        thus ((F1 _V ) . v1) = ((v1 .--> v2) . v1) by A5, A10, FUNCT_4: 13

        .= v2 by FUNCOP_1: 72;

        v3 <> v1 by A1;

        then not v3 in {v1} by TARSKI:def 1;

        then not v3 in ( dom (v1 .--> v2));

        hence ((F1 _V ) . v3) = v4 by A2, A5, FUNCT_4: 11;

      end;

      

       A11: not e1 in ( the_Edges_of G5) & not e2 in ( the_Edges_of G6) by A1, GLIB_006:def 10;

      v2 in ( rng (F1 _V )) & v4 in ( rng (F1 _V )) by A9, FUNCT_1: 3;

      then v2 is Vertex of G6 & v4 is Vertex of G6;

      then

      consider F2 be PGraphMapping of G1, G2 such that

       A12: F2 = [(F1 _V ), ((F1 _E ) +* (e1 .--> e2))] and

       A13: F1 is total implies F2 is total and

       A14: F1 is onto implies F2 is onto and

       A15: F1 is one-to-one implies F2 is one-to-one by A3, A4, A9, A11, Th152;

      take F2;

      thus F2 = [((F0 _V ) +* (v1 .--> v2)), ((F0 _E ) +* (e1 .--> e2))] by A5, A12;

      thus

       A16: F0 is total implies F2 is total by A6, A13;

      thus

       A17: F0 is onto implies F2 is onto by A7, A14;

      thus

       A18: F0 is one-to-one implies F2 is one-to-one by A8, A15;

      thus F0 is weak_SG-embedding implies F2 is weak_SG-embedding by A16, A18;

      thus F0 is isomorphism implies F2 is isomorphism by A16, A17, A18;

    end;

    theorem :: GLIB_010:160

    for G3,G4 be _Graph, v3 be Vertex of G3, v4 be Vertex of G4 holds for e1,e2,v1,v2 be object holds for G1 be addAdjVertex of G3, v3, e1, v1 holds for G2 be addAdjVertex of G4, v2, e2, v4 holds for F0 be PGraphMapping of G3, G4 st not e1 in ( the_Edges_of G3) & not e2 in ( the_Edges_of G4) & not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4) & v3 in ( dom (F0 _V )) & ((F0 _V ) . v3) = v4 holds ex F be PGraphMapping of G1, G2 st F = [((F0 _V ) +* (v1 .--> v2)), ((F0 _E ) +* (e1 .--> e2))] & (F0 is total implies F is total) & (F0 is onto implies F is onto) & (F0 is one-to-one implies F is one-to-one) & (F0 is weak_SG-embedding implies F is weak_SG-embedding) & (F0 is isomorphism implies F is isomorphism)

    proof

      let G3,G4 be _Graph, v3 be Vertex of G3, v4 be Vertex of G4;

      let e1,e2,v1,v2 be object;

      let G1 be addAdjVertex of G3, v3, e1, v1, G2 be addAdjVertex of G4, v2, e2, v4;

      let F0 be PGraphMapping of G3, G4;

      assume that

       A1: not e1 in ( the_Edges_of G3) & not e2 in ( the_Edges_of G4) & not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4) and

       A2: v3 in ( dom (F0 _V )) & ((F0 _V ) . v3) = v4;

      consider G5 be addVertex of G3, v1 such that

       A3: G1 is addEdge of G5, v3, e1, v1 by A1, GLIB_006: 125;

      consider G6 be addVertex of G4, v2 such that

       A4: G2 is addEdge of G6, v2, e2, v4 by A1, GLIB_006: 126;

      consider F1 be PGraphMapping of G5, G6 such that

       A5: F1 = [((F0 _V ) +* (v1 .--> v2)), (F0 _E )] and

       A6: F0 is total implies F1 is total and

       A7: F0 is onto implies F1 is onto and

       A8: F0 is one-to-one implies F1 is one-to-one and F0 is directed implies F1 is directed and F0 is semi-continuous implies F1 is semi-continuous and F0 is continuous implies F1 is continuous and F0 is semi-Dcontinuous implies F1 is semi-Dcontinuous and F0 is Dcontinuous implies F1 is Dcontinuous by A1, Th148;

      

       A9: v1 in ( dom (F1 _V )) & v3 in ( dom (F1 _V )) & ((F1 _V ) . v1) = v2 & ((F1 _V ) . v3) = v4

      proof

        v1 in {v1} by TARSKI:def 1;

        then v1 in ( dom ( {v1} --> v2));

        then

         A10: v1 in ( dom (v1 .--> v2)) by FUNCOP_1:def 9;

        hence v1 in ( dom (F1 _V )) by A5, FUNCT_4: 10, TARSKI:def 3;

        thus v3 in ( dom (F1 _V )) by A2, A5, FUNCT_4: 10, TARSKI:def 3;

        

        thus ((F1 _V ) . v1) = ((v1 .--> v2) . v1) by A5, A10, FUNCT_4: 13

        .= v2 by FUNCOP_1: 72;

        v3 <> v1 by A1;

        then not v3 in {v1} by TARSKI:def 1;

        then not v3 in ( dom (v1 .--> v2));

        hence ((F1 _V ) . v3) = v4 by A2, A5, FUNCT_4: 11;

      end;

      

       A11: not e1 in ( the_Edges_of G5) & not e2 in ( the_Edges_of G6) by A1, GLIB_006:def 10;

      v2 in ( rng (F1 _V )) & v4 in ( rng (F1 _V )) by A9, FUNCT_1: 3;

      then v2 is Vertex of G6 & v4 is Vertex of G6;

      then

      consider F2 be PGraphMapping of G1, G2 such that

       A12: F2 = [(F1 _V ), ((F1 _E ) +* (e1 .--> e2))] and

       A13: F1 is total implies F2 is total and

       A14: F1 is onto implies F2 is onto and

       A15: F1 is one-to-one implies F2 is one-to-one by A3, A4, A9, A11, Th152;

      take F2;

      thus F2 = [((F0 _V ) +* (v1 .--> v2)), ((F0 _E ) +* (e1 .--> e2))] by A5, A12;

      thus

       A16: F0 is total implies F2 is total by A6, A13;

      thus

       A17: F0 is onto implies F2 is onto by A7, A14;

      thus

       A18: F0 is one-to-one implies F2 is one-to-one by A8, A15;

      thus F0 is weak_SG-embedding implies F2 is weak_SG-embedding by A16, A18;

      thus F0 is isomorphism implies F2 is isomorphism by A16, A17, A18;

    end;

    theorem :: GLIB_010:161

    for G be _Graph, v be object, V be set holds for G1,G2 be addAdjVertexAll of G, v, V holds G2 is G1 -isomorphic

    proof

      let G be _Graph, v be object, V be set;

      let G1,G2 be addAdjVertexAll of G, v, V;

      per cases ;

        suppose

         A1: V c= ( the_Vertices_of G) & not v in ( the_Vertices_of G);

        set f = ( id (( the_Vertices_of G) \/ {v}));

        consider E1 be set such that

         A2: ( card V) = ( card E1) & E1 misses ( the_Edges_of G) & ( the_Edges_of G1) = (( the_Edges_of G) \/ E1) and for v1 be object st v1 in V holds ex e1 be object st e1 in E1 & e1 Joins (v1,v,G1) & for e9 be object st e9 Joins (v1,v,G1) holds e1 = e9 by A1, GLIB_007:def 4;

        consider g be Function of ( the_Edges_of G1), ( the_Edges_of G2) such that

         A3: (g | ( the_Edges_of G)) = ( id ( the_Edges_of G)) & g is one-to-one onto and

         A4: for v1,e,v2 be object st e Joins (v1,v2,G1) holds (g . e) Joins (v1,v2,G2) by GLIB_007: 68;

        

         A5: ( dom f) = ( the_Vertices_of G1) by A1, GLIB_007:def 4;

        

         A6: ( rng f) = ( the_Vertices_of G2) by A1, GLIB_007:def 4;

        reconsider f as PartFunc of ( the_Vertices_of G1), ( the_Vertices_of G2) by A5, A6;

        

         A7: ( dom g) = ( the_Edges_of G1)

        proof

          per cases ;

            suppose ( the_Edges_of G2) <> {} ;

            hence thesis by FUNCT_2:def 1;

          end;

            suppose

             A8: ( the_Edges_of G2) = {} ;

            ( the_Edges_of G) c= ( the_Edges_of G2) by GLIB_006:def 9;

            then

             A9: ( the_Edges_of G) = {} by A8, XBOOLE_1: 3;

            V is empty by A1, A8, GLIB_007: 47;

            then

             A10: ( card ( the_Edges_of G)) = 0 & ( card E1) = 0 by A2, A9;

            ( card ( the_Edges_of G1)) = (( card ( the_Edges_of G)) +` ( card E1)) by A2, CARD_2: 35

            .= 0 by A10, CARD_2: 18;

            then ( the_Edges_of G1) = {} ;

            hence thesis;

          end;

        end;

        

         A11: ( rng g) = ( the_Edges_of G2) by A3, FUNCT_2:def 3;

        reconsider g as PartFunc of ( the_Edges_of G1), ( the_Edges_of G2);

        now

          hereby

            let e be object;

            assume e in ( dom g);

            then e Joins ((( the_Source_of G1) . e),(( the_Target_of G1) . e),G1) by GLIB_000:def 13;

            hence (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f) by A5, GLIB_000: 13;

          end;

          let e,v0,w be object;

          assume e in ( dom g) & v0 in ( dom f) & w in ( dom f);

          then

           A12: v0 in (( the_Vertices_of G) \/ {v}) & w in (( the_Vertices_of G) \/ {v});

          assume e Joins (v0,w,G1);

          then (g . e) Joins (v0,w,G2) by A4;

          then (g . e) Joins ((f . v0),w,G2) by A12, FUNCT_1: 18;

          hence (g . e) Joins ((f . v0),(f . w),G2) by A12, FUNCT_1: 18;

        end;

        then

        reconsider F = [f, g] as PGraphMapping of G1, G2 by Th8;

        

         A13: F is total by A5, A7;

        

         A14: F is one-to-one by A3;

        F is onto by A6, A11;

        hence thesis by A13, A14;

      end;

        suppose not (V c= ( the_Vertices_of G) & not v in ( the_Vertices_of G));

        then G1 == G & G2 == G by GLIB_007:def 4;

        then

         A15: G1 is reverseEdgeDirections of G, {} & G2 is reverseEdgeDirections of G, {} by GLIB_009: 42;

        G is G -isomorphic by Th53;

        hence thesis by A15, Th143;

      end;

    end;

    theorem :: GLIB_010:162

    

     Th162: for G3,G4 be _Graph, v1,v2 be object, V1,V2 be set holds for G1 be addAdjVertexAll of G3, v1, V1 holds for G2 be addAdjVertexAll of G4, v2, V2 holds for F0 be PGraphMapping of G3, G4 st V1 c= ( the_Vertices_of G3) & V2 c= ( the_Vertices_of G4) & not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4) & ((F0 _V ) | V1) is one-to-one & ( dom ((F0 _V ) | V1)) = V1 & ( rng ((F0 _V ) | V1)) = V2 holds ex F be PGraphMapping of G1, G2 st (F _V ) = ((F0 _V ) +* (v1 .--> v2)) & ((F _E ) | ( dom (F0 _E ))) = (F0 _E ) & (F0 is total implies F is total) & (F0 is onto implies F is onto) & (F0 is one-to-one implies F is one-to-one) & (F0 is weak_SG-embedding implies F is weak_SG-embedding) & (F0 is isomorphism implies F is isomorphism)

    proof

      let G3,G4 be _Graph, v1,v2 be object, V1,V2 be set;

      let G1 be addAdjVertexAll of G3, v1, V1, G2 be addAdjVertexAll of G4, v2, V2;

      let F0 be PGraphMapping of G3, G4;

      assume that

       A1: V1 c= ( the_Vertices_of G3) & V2 c= ( the_Vertices_of G4) & not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4) and

       A2: ((F0 _V ) | V1) is one-to-one & ( dom ((F0 _V ) | V1)) = V1 & ( rng ((F0 _V ) | V1)) = V2;

      

       A3: V1 c= ( dom (F0 _V ))

      proof

        V1 = (( dom (F0 _V )) /\ V1) by A2, RELAT_1: 61;

        hence thesis by XBOOLE_1: 17;

      end;

      set f = ((F0 _V ) +* (v1 .--> v2));

      

       A4: v1 is set & v2 is set by TARSKI: 1;

      

       A5: {v1} = ( dom ( {v1} --> v2))

      .= ( dom (v1 .--> v2)) by FUNCOP_1:def 9;

      

       A6: ( dom f) = (( dom (F0 _V )) \/ {v1}) by A5, FUNCT_4:def 1;

       not v1 in ( dom (F0 _V )) by A1;

      then

       A7: ( dom (F0 _V )) misses ( dom (v1 .--> v2)) by A5, ZFMISC_1: 50;

      ( dom f) c= (( the_Vertices_of G3) \/ {v1}) by A6, XBOOLE_1: 9;

      then

       A8: ( dom f) c= ( the_Vertices_of G1) by A1, GLIB_007:def 4;

       not v2 in ( rng (F0 _V )) by A1;

      then ( rng (F0 _V )) misses {v2} by ZFMISC_1: 50;

      then

       A9: ( rng (F0 _V )) misses ( rng (v1 .--> v2)) by A4, FUNCOP_1: 88;

      

       A10: ( rng f) = (( rng (F0 _V )) \/ ( rng (v1 .--> v2))) by A7, NECKLACE: 6

      .= (( rng (F0 _V )) \/ {v2}) by A4, FUNCOP_1: 88;

      ( rng f) c= (( the_Vertices_of G4) \/ {v2}) by A10, XBOOLE_1: 9;

      then ( rng f) c= ( the_Vertices_of G2) by A1, GLIB_007:def 4;

      then

      reconsider f as PartFunc of ( the_Vertices_of G1), ( the_Vertices_of G2) by A8, RELSET_1: 4;

      V1 c= V1;

      then

      consider h1 be Function of V1, (G1 .edgesBetween (V1, {v1})) such that

       A11: h1 is one-to-one onto and

       A12: for w be object st w in V1 holds (h1 . w) Joins (w,v1,G1) by A1, GLIB_007: 57;

      V2 c= V2;

      then

      consider h2 be Function of V2, (G2 .edgesBetween (V2, {v2})) such that

       A13: h2 is one-to-one onto and

       A14: for w be object st w in V2 holds (h2 . w) Joins (w,v2,G2) by A1, GLIB_007: 57;

      reconsider h1 as one-to-one Function by A11;

      set g = ((F0 _E ) +* ((h2 * (F0 _V )) * (h1 " )));

      ( dom ((h2 * (F0 _V )) * (h1 " ))) c= ( dom (h1 " )) by RELAT_1: 25;

      then (( dom (F0 _E )) \/ ( dom ((h2 * (F0 _V )) * (h1 " )))) c= (( the_Edges_of G3) \/ ( dom (h1 " ))) by XBOOLE_1: 13;

      then ( dom g) c= (( the_Edges_of G3) \/ ( dom (h1 " ))) by FUNCT_4:def 1;

      then ( dom g) c= (( the_Edges_of G3) \/ ( rng h1)) by FUNCT_1: 33;

      then ( dom g) c= (( the_Edges_of G3) \/ (G1 .edgesBetween (V1, {v1}))) by A11, FUNCT_2:def 3;

      then

       A15: ( dom g) c= ( the_Edges_of G1) by A1, GLIB_007: 59;

      

       A16: ( rng ((h2 * (F0 _V )) * (h1 " ))) c= ( rng (h2 * (F0 _V ))) by RELAT_1: 26;

      ( rng (h2 * (F0 _V ))) c= ( rng h2) by RELAT_1: 26;

      then ( rng ((h2 * (F0 _V )) * (h1 " ))) c= ( rng h2) by A16, XBOOLE_1: 1;

      then

       A17: (( rng (F0 _E )) \/ ( rng ((h2 * (F0 _V )) * (h1 " )))) c= (( the_Edges_of G4) \/ ( rng h2)) by XBOOLE_1: 13;

      ( rng g) c= (( rng (F0 _E )) \/ ( rng ((h2 * (F0 _V )) * (h1 " )))) by FUNCT_4: 17;

      then ( rng g) c= (( the_Edges_of G4) \/ ( rng h2)) by A17, XBOOLE_1: 1;

      then ( rng g) c= (( the_Edges_of G4) \/ (G2 .edgesBetween (V2, {v2}))) by A13, FUNCT_2:def 3;

      then ( rng g) c= ( the_Edges_of G2) by A1, GLIB_007: 59;

      then

      reconsider g as PartFunc of ( the_Edges_of G1), ( the_Edges_of G2) by A15, RELSET_1: 4;

      

       A18: (G1 .edgesBetween (V1, {v1})) misses ( the_Edges_of G3) & ( the_Edges_of G1) = (( the_Edges_of G3) \/ (G1 .edgesBetween (V1, {v1}))) by A1, GLIB_007: 59;

      

       A19: ( dom (F0 _E )) misses ( dom ((h2 * (F0 _V )) * (h1 " )))

      proof

        assume ( dom (F0 _E )) meets ( dom ((h2 * (F0 _V )) * (h1 " )));

        then (( dom (F0 _E )) /\ ( dom ((h2 * (F0 _V )) * (h1 " )))) <> {} by XBOOLE_0:def 7;

        then

        consider e be object such that

         A20: e in (( dom (F0 _E )) /\ ( dom ((h2 * (F0 _V )) * (h1 " )))) by XBOOLE_0:def 1;

        

         A21: e in ( the_Edges_of G3) by A20;

        e in ( dom ((h2 * (F0 _V )) * (h1 " ))) by A20, XBOOLE_0:def 4;

        then e in ( dom (h1 " )) by FUNCT_1: 11;

        then e in ( rng h1) by FUNCT_1: 33;

        then e in (G1 .edgesBetween (V1, {v1})) by A11, FUNCT_2:def 3;

        then e in (( the_Edges_of G3) /\ (G1 .edgesBetween (V1, {v1}))) by A21, XBOOLE_0:def 4;

        hence contradiction by A1, GLIB_007: 59, XBOOLE_0:def 7;

      end;

      

       A22: ( rng (F0 _E )) misses ( rng ((h2 * (F0 _V )) * (h1 " )))

      proof

        assume ( rng (F0 _E )) meets ( rng ((h2 * (F0 _V )) * (h1 " )));

        then (( rng (F0 _E )) /\ ( rng ((h2 * (F0 _V )) * (h1 " )))) <> {} by XBOOLE_0:def 7;

        then

        consider e be object such that

         A23: e in (( rng (F0 _E )) /\ ( rng ((h2 * (F0 _V )) * (h1 " )))) by XBOOLE_0:def 1;

        e in ( rng (F0 _E )) by A23, XBOOLE_0:def 4;

        then

         A24: e in ( the_Edges_of G4);

        e in ( rng ((h2 * (F0 _V )) * (h1 " ))) by A23, XBOOLE_0:def 4;

        then e in ( rng (h2 * (F0 _V ))) by RELAT_1: 26, TARSKI:def 3;

        then e in ( rng h2) by RELAT_1: 26, TARSKI:def 3;

        then e in (( the_Edges_of G4) /\ (G2 .edgesBetween (V2, {v2}))) by A24, XBOOLE_0:def 4;

        hence contradiction by A1, GLIB_007: 59, XBOOLE_0:def 7;

      end;

      consider E1 be set such that ( card V1) = ( card E1) & E1 misses ( the_Edges_of G3) & ( the_Edges_of G1) = (( the_Edges_of G3) \/ E1) and

       A25: for w1 be object st w1 in V1 holds ex e1 be object st e1 in E1 & e1 Joins (w1,v1,G1) & for e9 be object st e9 Joins (w1,v1,G1) holds e1 = e9 by A1, GLIB_007:def 4;

      consider E2 be set such that ( card V2) = ( card E2) & E2 misses ( the_Edges_of G4) & ( the_Edges_of G2) = (( the_Edges_of G4) \/ E2) and

       A26: for w2 be object st w2 in V2 holds ex e2 be object st e2 in E2 & e2 Joins (w2,v2,G2) & for e9 be object st e9 Joins (w2,v2,G2) holds e2 = e9 by A1, GLIB_007:def 4;

      now

        hereby

          let e be object;

          assume e in ( dom g);

          then e in (( dom (F0 _E )) \/ ( dom ((h2 * (F0 _V )) * (h1 " )))) by FUNCT_4:def 1;

          per cases by XBOOLE_0:def 3;

            suppose

             A27: e in ( dom (F0 _E ));

            then (( the_Source_of G1) . e) = (( the_Source_of G3) . e) & (( the_Target_of G1) . e) = (( the_Target_of G3) . e) by GLIB_006:def 9;

            then (( the_Source_of G1) . e) in ( dom (F0 _V )) & (( the_Target_of G1) . e) in ( dom (F0 _V )) by A27, Th5;

            hence (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f) by A6, XBOOLE_0:def 3;

          end;

            suppose e in ( dom ((h2 * (F0 _V )) * (h1 " )));

            then e in ( dom (h1 " )) by RELAT_1: 25, TARSKI:def 3;

            then e in ( rng h1) by FUNCT_1: 33;

            then e in (G1 .edgesBetween (V1, {v1})) by A11, FUNCT_2:def 3;

            then e SJoins (V1, {v1},G1) by GLIB_000:def 30;

            then (( the_Source_of G1) . e) in V1 & (( the_Target_of G1) . e) in {v1} or (( the_Source_of G1) . e) in {v1} & (( the_Target_of G1) . e) in V1 by GLIB_000:def 15;

            then

             A28: (( the_Source_of G1) . e) in (V1 \/ {v1}) & (( the_Target_of G1) . e) in (V1 \/ {v1}) by XBOOLE_0:def 3;

            (V1 \/ {v1}) c= (( dom (F0 _V )) \/ {v1}) by A3, XBOOLE_1: 9;

            hence (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f) by A6, A28;

          end;

        end;

        let e,v,w be object;

        assume

         A29: e in ( dom g) & v in ( dom f) & w in ( dom f);

        assume

         A30: e Joins (v,w,G1);

        per cases by GLIB_006: 72;

          suppose

           A31: e Joins (v,w,G3);

          then

           A32: e in ( the_Edges_of G3) by GLIB_000:def 13;

          

           A33: not e in ( dom ((h2 * (F0 _V )) * (h1 " )))

          proof

            assume e in ( dom ((h2 * (F0 _V )) * (h1 " )));

            then e in ( dom (h1 " )) by RELAT_1: 25, TARSKI:def 3;

            then e in ( rng h1) by FUNCT_1: 33;

            then e in (G1 .edgesBetween (V1, {v1})) by A11, FUNCT_2:def 3;

            then (( the_Edges_of G3) /\ (G1 .edgesBetween (V1, {v1}))) <> {} by A32, XBOOLE_0:def 4;

            hence contradiction by A18, XBOOLE_0:def 7;

          end;

          e in (( dom (F0 _E )) \/ ( dom ((h2 * (F0 _V )) * (h1 " )))) by A29, FUNCT_4:def 1;

          then

           A34: e in ( dom (F0 _E )) by A33, XBOOLE_0:def 3;

          v in ( the_Vertices_of G3) & w in ( the_Vertices_of G3) by A31, GLIB_000: 13;

          then

           A35: not v in {v1} & not w in {v1} by A1, TARSKI:def 1;

          then not v in ( dom (v1 .--> v2)) & not w in ( dom (v1 .--> v2));

          then

           A36: (f . v) = ((F0 _V ) . v) & (f . w) = ((F0 _V ) . w) by FUNCT_4: 11;

          v in (( dom (F0 _V )) \/ ( dom (v1 .--> v2))) & w in (( dom (F0 _V )) \/ ( dom (v1 .--> v2))) by A29, FUNCT_4:def 1;

          then v in ( dom (F0 _V )) & w in ( dom (F0 _V )) by A35, A5, XBOOLE_0:def 3;

          then ((F0 _E ) . e) Joins (((F0 _V ) . v),((F0 _V ) . w),G4) by A31, A34, Th4;

          then (g . e) Joins ((f . v),(f . w),G4) by A33, A36, FUNCT_4: 11;

          hence (g . e) Joins ((f . v),(f . w),G2) by GLIB_006: 70;

        end;

          suppose

           A37: not e in ( the_Edges_of G3);

          then

           A38: e in (G1 .edgesBetween (V1, {v1})) & (v = v1 & w in V1) or (v in V1 & w = v1) by A1, A18, A30, GLIB_007: 51;

          

           A39: not e in ( dom (F0 _E )) by A37;

          e in (( dom (F0 _E )) \/ ( dom ((h2 * (F0 _V )) * (h1 " )))) by A29, FUNCT_4:def 1;

          then

           A40: e in ( dom ((h2 * (F0 _V )) * (h1 " ))) by A39, XBOOLE_0:def 3;

          then

           A41: e in ( dom (h1 " )) & ((h1 " ) . e) in ( dom (h2 * (F0 _V ))) by FUNCT_1: 11;

          

           A42: (g . e) = (((h2 * (F0 _V )) * (h1 " )) . e) by A40, FUNCT_4: 13

          .= ((h2 * (F0 _V )) . ((h1 " ) . e)) by A40, FUNCT_1: 12

          .= (h2 . ((F0 _V ) . ((h1 " ) . e))) by A41, FUNCT_1: 12;

          e in ( rng h1) by A41, FUNCT_1: 33;

          then

           A43: (G1 .edgesBetween (V1, {v1})) <> {} ;

          per cases by A38;

            suppose

             A44: v = v1 & w in V1;

            then v in {v1} by TARSKI:def 1;

            

            then

             A45: (f . v) = ((v1 .--> v2) . v) by A5, FUNCT_4: 13

            .= v2 by A44, FUNCOP_1: 72;

            w <> v1 by A1, A44;

            then not w in ( dom (v1 .--> v2)) by TARSKI:def 1;

            then

             A46: (f . w) = ((F0 _V ) . w) by FUNCT_4: 11;

            consider e1 be object such that e1 in E1 & e1 Joins (w,v1,G1) and

             A47: for e2 be object st e2 Joins (w,v1,G1) holds e1 = e2 by A44, A25;

            (h1 . w) = e1 & e = e1 by A12, A30, A44, A47, GLIB_000: 14;

            then

             A48: (h1 . w) = e;

            w in ( dom h1) by A43, A44, FUNCT_2:def 1;

            then

             A49: (g . e) = (h2 . ((F0 _V ) . w)) by A42, A48, FUNCT_1: 34;

            

             A50: ((F0 _V ) . w) = (((F0 _V ) | V1) . w) by A44, FUNCT_1: 49;

            w in ( dom ((F0 _V ) | V1)) by A3, A44, RELAT_1: 57;

            then (h2 . ((F0 _V ) . w)) Joins (((F0 _V ) . w),v2,G2) by A2, A14, A50, FUNCT_1: 3;

            hence (g . e) Joins ((f . v),(f . w),G2) by A45, A46, A49, GLIB_000: 14;

          end;

            suppose

             A51: v in V1 & w = v1;

            then w in {v1} by TARSKI:def 1;

            

            then

             A52: (f . w) = ((v1 .--> v2) . w) by A5, FUNCT_4: 13

            .= v2 by A51, FUNCOP_1: 72;

            v in ( the_Vertices_of G3) by A1, A51;

            then not v in {v1} by A1, TARSKI:def 1;

            then not v in ( dom (v1 .--> v2));

            then

             A53: (f . v) = ((F0 _V ) . v) by FUNCT_4: 11;

            consider e1 be object such that e1 in E1 & e1 Joins (v,v1,G1) and

             A54: for e2 be object st e2 Joins (v,v1,G1) holds e1 = e2 by A51, A25;

            (h1 . v) = e1 & e = e1 by A12, A30, A51, A54;

            then

             A55: (h1 . v) = e;

            v in ( dom h1) by A43, A51, FUNCT_2:def 1;

            then

             A56: (g . e) = (h2 . ((F0 _V ) . v)) by A42, A55, FUNCT_1: 34;

            

             A57: ((F0 _V ) . v) = (((F0 _V ) | V1) . v) by A51, FUNCT_1: 49;

            v in ( dom ((F0 _V ) | V1)) by A3, A51, RELAT_1: 57;

            then (h2 . ((F0 _V ) . v)) Joins (((F0 _V ) . v),v2,G2) by A2, A14, A57, FUNCT_1: 3;

            hence (g . e) Joins ((f . v),(f . w),G2) by A52, A53, A56;

          end;

        end;

      end;

      then

      reconsider F = [f, g] as PGraphMapping of G1, G2 by Th8;

      take F;

      thus (F _V ) = ((F0 _V ) +* (v1 .--> v2));

      thus ((F _E ) | ( dom (F0 _E ))) = (F0 _E ) by A19, FUNCT_4: 33;

      thus

       A58: F0 is total implies F is total

      proof

        now

          let x be object;

          hereby

            assume x in ( dom ((h2 * (F0 _V )) * (h1 " )));

            then

             A59: x in ( dom (h1 " )) & ((h1 " ) . x) in ( dom (h2 * (F0 _V ))) by FUNCT_1: 11;

            

             A60: x in ( rng h1) by A59, FUNCT_1: 33;

            then h1 <> {} ;

            then (G1 .edgesBetween (V1, {v1})) <> {} ;

            then

             A61: ( dom h1) = V1 by FUNCT_2:def 1;

            consider y be object such that

             A62: y in ( dom h1) & (h1 . y) = x by A60, FUNCT_1:def 3;

            

             A63: x Joins (y,v1,G1) by A12, A61, A62;

            v1 in {v1} by TARSKI:def 1;

            then x SJoins (V1, {v1},G1) by A61, A62, A63, GLIB_000: 17;

            hence x in (G1 .edgesBetween (V1, {v1})) by GLIB_000:def 30;

          end;

          set w1 = (( the_Source_of G1) . x), w2 = (( the_Target_of G1) . x);

          assume

           A64: x in (G1 .edgesBetween (V1, {v1}));

          then (G1 .edgesBetween (V1, {v1})) <> {} ;

          then

           A65: ( dom h1) = V1 by FUNCT_2:def 1;

          

           A66: x SJoins (V1, {v1},G1) by A64, GLIB_000:def 30;

          per cases by GLIB_000:def 15;

            suppose

             A67: w1 in V1 & w2 in {v1};

            then

            consider e1 be object such that e1 in E1 & e1 Joins (w1,v1,G1) and

             A68: for e2 be object st e2 Joins (w1,v1,G1) holds e1 = e2 by A25;

            w2 = v1 & x in ( the_Edges_of G1) by A66, A67, TARSKI:def 1, GLIB_000:def 15;

            then

             A69: x Joins (w1,v1,G1) by GLIB_000:def 13;

            (h1 . w1) = e1 & x = e1 by A12, A67, A68, A69;

            then

             A70: (h1 . w1) = x;

            then x in ( rng h1) by A65, A67, FUNCT_1: 3;

            then

             A71: x in ( dom (h1 " )) by FUNCT_1: 33;

            

             A72: w1 in ( dom (F0 _V )) by A3, A67;

            then

             A73: w1 in ( dom ((F0 _V ) | V1)) by A67, RELAT_1: 57;

            ((F0 _V ) . w1) = (((F0 _V ) | V1) . w1) by A67, FUNCT_1: 49;

            then

             A74: ((F0 _V ) . w1) in V2 by A2, A73, FUNCT_1: 3;

            then

             A75: (h2 . ((F0 _V ) . w1)) Joins (((F0 _V ) . w1),v2,G2) by A14;

            v2 in {v2} by TARSKI:def 1;

            then (h2 . ((F0 _V ) . w1)) SJoins (V2, {v2},G2) by A74, A75, GLIB_000: 17;

            then (h2 . ((F0 _V ) . w1)) in (G2 .edgesBetween (V2, {v2})) by GLIB_000:def 30;

            then ( dom h2) = V2 by FUNCT_2:def 1;

            then

             A76: w1 in ( dom (h2 * (F0 _V ))) by A72, A74, FUNCT_1: 11;

            ((h1 " ) . x) = w1 by A65, A67, A70, FUNCT_1: 34;

            hence x in ( dom ((h2 * (F0 _V )) * (h1 " ))) by A71, A76, FUNCT_1: 11;

          end;

            suppose

             A77: w1 in {v1} & w2 in V1;

            then

            consider e1 be object such that e1 in E1 & e1 Joins (w2,v1,G1) and

             A78: for e2 be object st e2 Joins (w2,v1,G1) holds e1 = e2 by A25;

            w1 = v1 & x in ( the_Edges_of G1) by A66, A77, TARSKI:def 1, GLIB_000:def 15;

            then

             A79: x Joins (w2,v1,G1) by GLIB_000:def 13;

            (h1 . w2) = e1 & x = e1 by A12, A77, A78, A79;

            then

             A80: (h1 . w2) = x;

            then x in ( rng h1) by A65, A77, FUNCT_1: 3;

            then

             A81: x in ( dom (h1 " )) by FUNCT_1: 33;

            

             A82: w2 in ( dom (F0 _V )) by A3, A77;

            then

             A83: w2 in ( dom ((F0 _V ) | V1)) by A77, RELAT_1: 57;

            ((F0 _V ) . w2) = (((F0 _V ) | V1) . w2) by A77, FUNCT_1: 49;

            then

             A84: ((F0 _V ) . w2) in V2 by A2, A83, FUNCT_1: 3;

            then

             A85: (h2 . ((F0 _V ) . w2)) Joins (((F0 _V ) . w2),v2,G2) by A14;

            v2 in {v2} by TARSKI:def 1;

            then (h2 . ((F0 _V ) . w2)) SJoins (V2, {v2},G2) by A84, A85, GLIB_000: 17;

            then (G2 .edgesBetween (V2, {v2})) <> {} by GLIB_000:def 30;

            then ((F0 _V ) . w2) in ( dom h2) by A84, FUNCT_2:def 1;

            then

             A86: w2 in ( dom (h2 * (F0 _V ))) by A82, FUNCT_1: 11;

            ((h1 " ) . x) = w2 by A65, A77, A80, FUNCT_1: 34;

            hence x in ( dom ((h2 * (F0 _V )) * (h1 " ))) by A81, A86, FUNCT_1: 11;

          end;

        end;

        then

         A87: ( dom ((h2 * (F0 _V )) * (h1 " ))) = (G1 .edgesBetween (V1, {v1})) by TARSKI: 2;

        assume F0 is total;

        then

         A88: ( dom (F0 _V )) = ( the_Vertices_of G3) & ( dom (F0 _E )) = ( the_Edges_of G3);

        

         A89: ( dom (F _V )) = (( dom (F0 _V )) \/ {v1}) by A5, FUNCT_4:def 1

        .= ( the_Vertices_of G1) by A1, A88, GLIB_007:def 4;

        ( dom (F _E )) = ( the_Edges_of G1) by A18, A87, A88, FUNCT_4:def 1;

        hence thesis by A89;

      end;

      thus

       A90: F0 is onto implies F is onto

      proof

        now

          let x be object;

          thus x in ( rng ((h2 * (F0 _V )) * (h1 " ))) implies x in (G2 .edgesBetween (V2, {v2}));

          set w1 = (( the_Source_of G2) . x), w2 = (( the_Target_of G2) . x);

          assume

           A91: x in (G2 .edgesBetween (V2, {v2}));

          then

           A92: ( dom h2) = V2 by FUNCT_2:def 1;

          

           A93: x SJoins (V2, {v2},G2) by A91, GLIB_000:def 30;

          per cases by GLIB_000:def 15;

            suppose

             A94: w1 in V2 & w2 in {v2};

            then

             A95: (h2 . w1) Joins (w1,v2,G2) by A14;

            consider e2 be object such that e2 in E2 & e2 Joins (w1,v2,G2) and

             A96: for e9 be object st e9 Joins (w1,v2,G2) holds e2 = e9 by A94, A26;

            w2 = v2 & x in ( the_Edges_of G2) by A93, A94, GLIB_000:def 15, TARSKI:def 1;

            then x Joins (w1,v2,G2) by GLIB_000:def 13;

            then (h2 . w1) = e2 & x = e2 by A95, A96;

            then

             A97: (h2 . w1) = x;

            w1 in ( rng ((F0 _V ) | V1)) by A2, A94;

            then

            consider z be object such that

             A98: z in ( dom ((F0 _V ) | V1)) & (((F0 _V ) | V1) . z) = w1 by FUNCT_1:def 3;

            

             A99: z in V1 by A98;

            then

             A100: (h1 . z) Joins (z,v1,G1) by A12;

            v1 in {v1} by TARSKI:def 1;

            then (h1 . z) SJoins (V1, {v1},G1) by A99, A100, GLIB_000: 17;

            then (h1 . z) in (G1 .edgesBetween (V1, {v1})) by GLIB_000:def 30;

            then ( dom h1) = V1 by FUNCT_2:def 1;

            then z in ( rng (h1 " )) by A99, FUNCT_1: 33;

            then

            consider y be object such that

             A101: y in ( dom (h1 " )) & ((h1 " ) . y) = z by FUNCT_1:def 3;

            ((h1 " ) . y) in V1 by A99, A101;

            then

             A102: y in ( dom ((F0 _V ) * (h1 " ))) by A3, A101, FUNCT_1: 11;

            

            then

             A103: (((F0 _V ) * (h1 " )) . y) = ((F0 _V ) . z) by A101, FUNCT_1: 12

            .= w1 by A98, FUNCT_1: 49;

            then

             A104: y in ( dom (h2 * ((F0 _V ) * (h1 " )))) by A92, A94, A102, FUNCT_1: 11;

            

             A105: (((h2 * (F0 _V )) * (h1 " )) . y) = ((h2 * ((F0 _V ) * (h1 " ))) . y) by RELAT_1: 36

            .= x by A97, A103, A104, FUNCT_1: 12;

            y in ( dom ((h2 * (F0 _V )) * (h1 " ))) by A104, RELAT_1: 36;

            hence x in ( rng ((h2 * (F0 _V )) * (h1 " ))) by A105, FUNCT_1: 3;

          end;

            suppose

             A106: w1 in {v2} & w2 in V2;

            then

             A107: (h2 . w2) Joins (w2,v2,G2) by A14;

            consider e2 be object such that e2 in E2 & e2 Joins (w2,v2,G2) and

             A108: for e9 be object st e9 Joins (w2,v2,G2) holds e2 = e9 by A106, A26;

            w1 = v2 & x in ( the_Edges_of G2) by A93, A106, GLIB_000:def 15, TARSKI:def 1;

            then x Joins (w2,v2,G2) by GLIB_000:def 13;

            then (h2 . w2) = e2 & x = e2 by A107, A108;

            then

             A109: (h2 . w2) = x;

            w2 in ( rng ((F0 _V ) | V1)) by A2, A106;

            then

            consider z be object such that

             A110: z in ( dom ((F0 _V ) | V1)) & (((F0 _V ) | V1) . z) = w2 by FUNCT_1:def 3;

            

             A111: z in V1 by A110;

            then

             A112: (h1 . z) Joins (z,v1,G1) by A12;

            v1 in {v1} by TARSKI:def 1;

            then (h1 . z) SJoins (V1, {v1},G1) by A111, A112, GLIB_000: 17;

            then (h1 . z) in (G1 .edgesBetween (V1, {v1})) by GLIB_000:def 30;

            then ( dom h1) = V1 by FUNCT_2:def 1;

            then z in ( rng (h1 " )) by A111, FUNCT_1: 33;

            then

            consider y be object such that

             A113: y in ( dom (h1 " )) & ((h1 " ) . y) = z by FUNCT_1:def 3;

            ((h1 " ) . y) in V1 by A111, A113;

            then

             A114: y in ( dom ((F0 _V ) * (h1 " ))) by A3, A113, FUNCT_1: 11;

            

            then

             A115: (((F0 _V ) * (h1 " )) . y) = ((F0 _V ) . z) by A113, FUNCT_1: 12

            .= w2 by A110, FUNCT_1: 49;

            then

             A116: y in ( dom (h2 * ((F0 _V ) * (h1 " )))) by A92, A106, A114, FUNCT_1: 11;

            

             A117: (((h2 * (F0 _V )) * (h1 " )) . y) = ((h2 * ((F0 _V ) * (h1 " ))) . y) by RELAT_1: 36

            .= x by A109, A115, A116, FUNCT_1: 12;

            y in ( dom ((h2 * (F0 _V )) * (h1 " ))) by A116, RELAT_1: 36;

            hence x in ( rng ((h2 * (F0 _V )) * (h1 " ))) by A117, FUNCT_1: 3;

          end;

        end;

        then

         A118: ( rng ((h2 * (F0 _V )) * (h1 " ))) = (G2 .edgesBetween (V2, {v2})) by TARSKI: 2;

        assume F0 is onto;

        then

         A119: ( rng (F0 _V )) = ( the_Vertices_of G4) & ( rng (F0 _E )) = ( the_Edges_of G4);

        

         A120: v1 is set & v2 is set by TARSKI: 1;

        

         A121: ( rng (F _V )) = (( rng (F0 _V )) \/ ( rng (v1 .--> v2))) by A7, NECKLACE: 6

        .= (( the_Vertices_of G4) \/ {v2}) by A119, A120, FUNCOP_1: 88

        .= ( the_Vertices_of G2) by A1, GLIB_007:def 4;

        ( rng (F _E )) = (( rng (F0 _E )) \/ ( rng ((h2 * (F0 _V )) * (h1 " )))) by A19, NECKLACE: 6

        .= ( the_Edges_of G2) by A1, A118, A119, GLIB_007: 59;

        hence thesis by A121;

      end;

      thus

       A122: F0 is one-to-one implies F is one-to-one by A9, A13, A22, FUNCT_4: 92;

      thus F0 is weak_SG-embedding implies F is weak_SG-embedding by A58, A122;

      thus F0 is isomorphism implies F is isomorphism by A58, A90, A122;

    end;

    theorem :: GLIB_010:163

    for G3 be _Graph, G4 be G3 -isomorphic _Graph, v1,v2 be object holds for G1 be addAdjVertexAll of G3, v1 holds for G2 be addAdjVertexAll of G4, v2 st v1 in ( the_Vertices_of G3) iff v2 in ( the_Vertices_of G4) holds G2 is G1 -isomorphic

    proof

      let G3 be _Graph, G4 be G3 -isomorphic _Graph, v1,v2 be object;

      let G1 be addAdjVertexAll of G3, v1;

      let G2 be addAdjVertexAll of G4, v2;

      assume v1 in ( the_Vertices_of G3) iff v2 in ( the_Vertices_of G4);

      per cases ;

        suppose

         A1: not v1 in ( the_Vertices_of G3) & not v2 in ( the_Vertices_of G4);

        consider F0 be PGraphMapping of G3, G4 such that

         A2: F0 is isomorphism by Def23;

        

         A3: ((F0 _V ) | ( the_Vertices_of G3)) is one-to-one by A2;

        

         A4: ( dom ((F0 _V ) | ( the_Vertices_of G3))) = ( the_Vertices_of G3) by A2, Def11;

        ( rng ((F0 _V ) | ( the_Vertices_of G3))) = ( the_Vertices_of G4) by A2, Def12;

        then

        consider F be PGraphMapping of G1, G2 such that (F _V ) = ((F0 _V ) +* (v1 .--> v2)) & ((F _E ) | ( dom (F0 _E ))) = (F0 _E ) and F0 is total implies F is total and F0 is onto implies F is onto and F0 is one-to-one implies F is one-to-one and F0 is weak_SG-embedding implies F is weak_SG-embedding and

         A5: F0 is isomorphism implies F is isomorphism by A1, A3, A4, Th162;

        thus thesis by A2, A5;

      end;

        suppose v1 in ( the_Vertices_of G3) & v2 in ( the_Vertices_of G4);

        then G1 == G3 & G2 == G4 by GLIB_007:def 4;

        then G1 is reverseEdgeDirections of G3, {} & G2 is reverseEdgeDirections of G4, {} by GLIB_009: 42;

        hence thesis by Th143;

      end;

    end;

    theorem :: GLIB_010:164

    

     Th164: for G1,G2 be _Graph holds for G3 be removeLoops of G1, G4 be removeLoops of G2 holds for F0 be one-to-one PGraphMapping of G1, G2 holds ex F be one-to-one PGraphMapping of G3, G4 st F = (F0 | G3) & (F0 is total implies F is total) & (F0 is onto implies F is onto) & (F0 is directed implies F is directed) & (F0 is semi-Dcontinuous implies F is semi-Dcontinuous)

    proof

      let G1,G2 be _Graph, G3 be removeLoops of G1, G4 be removeLoops of G2;

      let F0 be one-to-one PGraphMapping of G1, G2;

      reconsider F = (G4 |` (F0 | G3)) as one-to-one PGraphMapping of G3, G4;

      take F;

      

       A1: (F _V ) = (( the_Vertices_of G2) |` ((F0 | G3) _V )) by GLIB_000:def 33

      .= ((F0 | G3) _V );

      now

        let y be object;

        assume

         A2: y in ( rng ((F0 | G3) _E ));

         not y in (G2 .loops() )

        proof

          consider x be object such that

           A3: x in ( dom ((F0 _E ) | ( the_Edges_of G3))) & (((F0 _E ) | ( the_Edges_of G3)) . x) = y by A2, FUNCT_1:def 3;

          

           A4: x in ( dom (F0 _E )) & x in ( the_Edges_of G3) by A3, RELAT_1: 57;

          set v = (( the_Source_of G1) . x), w = (( the_Target_of G1) . x);

          

           A5: v in ( dom (F0 _V )) & w in ( dom (F0 _V )) by A4, Th5;

          

           A6: x Joins (v,w,G1) & ((F0 _E ) . x) = y by A3, A4, GLIB_000:def 13, FUNCT_1: 49;

          then

           A7: y Joins (((F0 _V ) . v),((F0 _V ) . w),G2) by A4, A5, Th4;

          x in (( the_Edges_of G1) \ (G1 .loops() )) by A4, GLIB_000: 53;

          then not x in (G1 .loops() ) by XBOOLE_0:def 5;

          then v <> w by A6, GLIB_009:def 2;

          then

           A8: ((F0 _V ) . v) <> ((F0 _V ) . w) by A5, FUNCT_1:def 4;

          for u be object holds not y Joins (u,u,G2)

          proof

            given u be object such that

             A9: y Joins (u,u,G2);

            ((F0 _V ) . v) = u & ((F0 _V ) . w) = u by A7, A9, GLIB_000: 15;

            hence contradiction by A8;

          end;

          hence thesis by GLIB_009:def 2;

        end;

        then y in (( the_Edges_of G2) \ (G2 .loops() )) by A2, XBOOLE_0:def 5;

        hence y in ( the_Edges_of G4) by GLIB_000: 53;

      end;

      then

       A10: ( rng ((F0 | G3) _E )) c= ( the_Edges_of G4) by TARSKI:def 3;

      (F _E ) = ((F0 | G3) _E ) by A10, RELAT_1: 94;

      hence

       A11: F = (F0 | G3) by A1, XTUPLE_0: 2;

      thus F0 is total implies F is total

      proof

        assume F0 is total;

        then (F0 | G3) is total by Th57;

        hence thesis by A11;

      end;

      thus F0 is onto implies F is onto

      proof

        assume F0 is onto;

        then

         A12: ( rng (F0 _V )) = ( the_Vertices_of G2) & ( rng (F0 _E )) = ( the_Edges_of G2);

        

         A13: ( rng (F _V )) = ( rng ((F0 | G3) _V )) by A1

        .= ( rng ((F0 _V ) | ( the_Vertices_of G1))) by GLIB_000:def 33

        .= ( the_Vertices_of G4) by A12, GLIB_000:def 33;

        now

          let y be object;

          assume y in ( the_Edges_of G4);

          then y in (( the_Edges_of G2) \ (G2 .loops() )) by GLIB_000: 53;

          then

           A14: y in ( rng (F0 _E )) & not y in (G2 .loops() ) by A12, XBOOLE_0:def 5;

          set w1 = (( the_Source_of G2) . y), w2 = (( the_Target_of G2) . y);

          w1 in ( rng (F0 _V )) by A14, Th6;

          then

          consider v1 be object such that

           A15: v1 in ( dom (F0 _V )) & ((F0 _V ) . v1) = w1 by FUNCT_1:def 3;

          w2 in ( rng (F0 _V )) by A14, Th6;

          then

          consider v2 be object such that

           A16: v2 in ( dom (F0 _V )) & ((F0 _V ) . v2) = w2 by FUNCT_1:def 3;

          consider x be object such that

           A17: x in ( dom (F0 _E )) & ((F0 _E ) . x) = y by A14, FUNCT_1:def 3;

          

           A18: y Joins (w1,w2,G2) by A14, GLIB_000:def 13;

          then

           A19: x Joins (v1,v2,G1) by A15, A16, A17, Def15;

          

           A20: v1 <> v2 by A14, A15, A16, A18, GLIB_009:def 2;

          for u be object holds not x Joins (u,u,G1)

          proof

            let u be object;

            assume x Joins (u,u,G1);

            then v1 = u & v2 = u by A19, GLIB_000: 15;

            hence contradiction by A20;

          end;

          then not x in (G1 .loops() ) by GLIB_009:def 2;

          then x in (( the_Edges_of G1) \ (G1 .loops() )) by A17, XBOOLE_0:def 5;

          then x in ( the_Edges_of G3) by GLIB_000: 53;

          then

           A21: x in ( dom ((F0 | G3) _E )) by A17, RELAT_1: 57;

          then (((F0 | G3) _E ) . x) = y by A17, FUNCT_1: 47;

          hence y in ( rng ((F0 | G3) _E )) by A21, FUNCT_1: 3;

        end;

        then ( the_Edges_of G4) c= ( rng ((F0 | G3) _E )) by TARSKI:def 3;

        then ( the_Edges_of G4) = ( rng (F _E )) by A11, XBOOLE_0:def 10;

        hence thesis by A13;

      end;

      thus F0 is directed implies F is directed;

      thus F0 is semi-Dcontinuous implies F is semi-Dcontinuous;

    end;

    theorem :: GLIB_010:165

    

     Th165: for G1,G2 be _Graph holds for G3 be removeLoops of G1, G4 be removeLoops of G2 holds for F0 be one-to-one PGraphMapping of G1, G2 holds ex F be one-to-one PGraphMapping of G3, G4 st F = (F0 | G3) & (F0 is weak_SG-embedding implies F is weak_SG-embedding) & (F0 is isomorphism implies F is isomorphism) & (F0 is Disomorphism implies F is Disomorphism)

    proof

      let G1,G2 be _Graph, G3 be removeLoops of G1, G4 be removeLoops of G2;

      let F0 be one-to-one PGraphMapping of G1, G2;

      consider F be one-to-one PGraphMapping of G3, G4 such that

       A1: F = (F0 | G3) and

       A2: F0 is total implies F is total and

       A3: F0 is onto implies F is onto and

       A4: F0 is directed implies F is directed and F0 is semi-Dcontinuous implies F is semi-Dcontinuous by Th164;

      take F;

      thus F = (F0 | G3) by A1;

      thus F0 is weak_SG-embedding implies F is weak_SG-embedding by A2;

      thus F0 is isomorphism implies F is isomorphism by A2, A3;

      thus F0 is Disomorphism implies F is Disomorphism by A2, A3, A4;

    end;

    theorem :: GLIB_010:166

    

     Th166: for G1 be _Graph, G2 be G1 -isomorphic _Graph holds for G3 be removeLoops of G1, G4 be removeLoops of G2 holds G4 is G3 -isomorphic

    proof

      let G1 be _Graph, G2 be G1 -isomorphic _Graph;

      let G3 be removeLoops of G1, G4 be removeLoops of G2;

      consider F0 be PGraphMapping of G1, G2 such that

       A1: F0 is isomorphism by Def23;

      reconsider F0 as one-to-one PGraphMapping of G1, G2 by A1;

      consider F be one-to-one PGraphMapping of G3, G4 such that F = (F0 | G3) and F0 is weak_SG-embedding implies F is weak_SG-embedding and

       A2: F0 is isomorphism implies F is isomorphism and F0 is Disomorphism implies F is Disomorphism by Th165;

      thus thesis by A1, A2;

    end;

    theorem :: GLIB_010:167

    

     Th167: for G1 be _Graph, G2 be G1 -Disomorphic _Graph holds for G3 be removeLoops of G1, G4 be removeLoops of G2 holds G4 is G3 -Disomorphic

    proof

      let G1 be _Graph, G2 be G1 -Disomorphic _Graph;

      let G3 be removeLoops of G1, G4 be removeLoops of G2;

      consider F0 be PGraphMapping of G1, G2 such that

       A1: F0 is Disomorphism by Def24;

      reconsider F0 as one-to-one PGraphMapping of G1, G2 by A1;

      consider F be one-to-one PGraphMapping of G3, G4 such that F = (F0 | G3) and F0 is weak_SG-embedding implies F is weak_SG-embedding and F0 is isomorphism implies F is isomorphism and

       A2: F0 is Disomorphism implies F is Disomorphism by Th165;

      thus thesis by A1, A2;

    end;

    theorem :: GLIB_010:168

    

     Th168: for G1 be _Graph, G2 be G1 -isomorphic _Graph holds for G3 be removeParallelEdges of G1 holds for G4 be removeParallelEdges of G2 holds G4 is G3 -isomorphic

    proof

      let G1 be _Graph, G2 be G1 -isomorphic _Graph;

      let G3 be removeParallelEdges of G1;

      let G4 be removeParallelEdges of G2;

      consider G be PGraphMapping of G1, G2 such that

       A1: G is isomorphism by Def23;

      consider E1 be RepEdgeSelection of G1 such that

       A2: G3 is inducedSubgraph of G1, ( the_Vertices_of G1), E1 by GLIB_009:def 7;

      consider E2 be RepEdgeSelection of G2 such that

       A3: G4 is inducedSubgraph of G2, ( the_Vertices_of G2), E2 by GLIB_009:def 7;

      

       A4: (G1 .edgesBetween ( the_Vertices_of G1)) = ( the_Edges_of G1) & (G2 .edgesBetween ( the_Vertices_of G2)) = ( the_Edges_of G2) by GLIB_000: 34;

      ( the_Vertices_of G1) c= ( the_Vertices_of G1) & ( the_Vertices_of G2) c= ( the_Vertices_of G2);

      then

       A5: ( the_Edges_of G3) = E1 & ( the_Edges_of G4) = E2 by A2, A3, A4, GLIB_000:def 37;

      

       A6: ( the_Vertices_of G3) = ( the_Vertices_of G1) & ( the_Vertices_of G4) = ( the_Vertices_of G2) by GLIB_000:def 33;

      then

      reconsider f = (G _V ) as PartFunc of ( the_Vertices_of G3), ( the_Vertices_of G4);

      defpred P[ object, object] means $2 in E2 & [$1, $2] in ( EdgeAdjEqRel G2);

      

       A7: for x,y1,y2 be object st x in ( the_Edges_of G2) & P[x, y1] & P[x, y2] holds y1 = y2

      proof

        let x,y1,y2 be object;

        set v1 = (( the_Source_of G2) . x), v2 = (( the_Target_of G2) . x);

        assume x in ( the_Edges_of G2);

        then

         A8: x Joins (v1,v2,G2) by GLIB_000:def 13;

        then

        consider e be object such that e Joins (v1,v2,G2) & e in E2 and

         A9: for e9 be object st e9 Joins (v1,v2,G2) & e9 in E2 holds e9 = e by GLIB_009:def 5;

        assume

         A10: P[x, y1];

        then

        consider w1,w2 be object such that

         A11: x Joins (w1,w2,G2) & y1 Joins (w1,w2,G2) by GLIB_009:def 3;

        w1 = v1 & w2 = v2 or w1 = v2 & w2 = v1 by A8, A11, GLIB_000: 15;

        then

         A12: y1 = e by A9, A10, A11, GLIB_000: 14;

        assume

         A13: P[x, y2];

        then

        consider u1,u2 be object such that

         A14: x Joins (u1,u2,G2) & y2 Joins (u1,u2,G2) by GLIB_009:def 3;

        u1 = v1 & u2 = v2 or u1 = v2 & u2 = v1 by A8, A14, GLIB_000: 15;

        then y2 Joins (v1,v2,G2) by A14, GLIB_000: 14;

        hence y1 = y2 by A9, A12, A13;

      end;

      

       A15: for x be object st x in ( the_Edges_of G2) holds ex y be object st P[x, y]

      proof

        let x be object;

        set v1 = (( the_Source_of G2) . x), v2 = (( the_Target_of G2) . x);

        assume x in ( the_Edges_of G2);

        then

         A16: x Joins (v1,v2,G2) by GLIB_000:def 13;

        then

        consider e be object such that

         A17: e Joins (v1,v2,G2) & e in E2 and for e9 be object st e9 Joins (v1,v2,G2) & e9 in E2 holds e9 = e by GLIB_009:def 5;

        take e;

        thus thesis by A16, A17, GLIB_009:def 3;

      end;

      consider h be Function such that

       A18: ( dom h) = ( the_Edges_of G2) and

       A19: for x be object st x in ( the_Edges_of G2) holds P[x, (h . x)] from FUNCT_1:sch 2( A7, A15);

      set g = ((h * (G _E )) | E1);

      ( dom h) = ( rng (G _E )) by A1, A18, Def12;

      then

       A20: ( dom (h * (G _E ))) = ( dom (G _E )) & ( rng (h * (G _E ))) = ( rng h) by RELAT_1: 27, RELAT_1: 28;

      

      then

       A21: ( dom g) = (( dom (G _E )) /\ E1) by RELAT_1: 61

      .= (( the_Edges_of G1) /\ E1) by A1, Def11

      .= E1 by XBOOLE_1: 28;

      now

        let y be object;

        hereby

          assume y in ( rng g);

          then y in ( rng h) by A20, RELAT_1: 70, TARSKI:def 3;

          then

          consider x be object such that

           A22: x in ( dom h) & y = (h . x) by FUNCT_1:def 3;

          thus y in E2 by A18, A19, A22;

        end;

        assume

         A23: y in E2;

        then

         A24: y in ( the_Edges_of G2);

        set v1 = (( the_Source_of G2) . y), v2 = (( the_Target_of G2) . y);

        

         A25: y Joins (v1,v2,G2) by A24, GLIB_000:def 13;

        then

        consider e be object such that e Joins (v1,v2,G2) & e in E2 and

         A26: for e9 be object st e9 Joins (v1,v2,G2) & e9 in E2 holds e9 = e by GLIB_009:def 5;

        y in ( rng (G _E )) by A1, A24, Def12;

        then

        consider x0 be object such that

         A27: x0 in ( dom (G _E )) & ((G _E ) . x0) = y by FUNCT_1:def 3;

        set u1 = (( the_Source_of G1) . x0), u2 = (( the_Target_of G1) . x0);

        

         A28: u1 in ( dom (G _V )) & u2 in ( dom (G _V )) by A27, Th5;

        

         A29: x0 Joins (u1,u2,G1) by A27, GLIB_000:def 13;

        then

        consider x be object such that

         A30: x Joins (u1,u2,G1) & x in E1 and for e9 be object st e9 Joins (u1,u2,G1) & e9 in E1 holds e9 = x by GLIB_009:def 5;

        x in ( the_Edges_of G1) by A30;

        then

         A31: x in ( dom (G _E )) by A1, Def11;

        then

         A32: ((G _E ) . x) Joins (((G _V ) . u1),((G _V ) . u2),G2) by A28, A30, Th4;

        ((G _E ) . x0) Joins (((G _V ) . u1),((G _V ) . u2),G2) by A27, A28, A29, Th4;

        then ((G _V ) . u1) = v1 & ((G _V ) . u2) = v2 or ((G _V ) . u1) = v2 & ((G _V ) . u2) = v1 by A25, A27, GLIB_000: 15;

        then

         A33: ((G _E ) . x) Joins (v1,v2,G2) by A32, GLIB_000: 14;

        

         A34: ((G _E ) . x) in ( the_Edges_of G2) by A33, GLIB_000:def 13;

        then

         A35: (h . ((G _E ) . x)) in E2 & [((G _E ) . x), (h . ((G _E ) . x))] in ( EdgeAdjEqRel G2) by A19;

        then

        consider w1,w2 be object such that

         A36: ((G _E ) . x) Joins (w1,w2,G2) & (h . ((G _E ) . x)) Joins (w1,w2,G2) by GLIB_009:def 3;

        v1 = w1 & v2 = w2 or v1 = w2 & v2 = w1 by A33, A36, GLIB_000: 15;

        then

         A37: y = e & (h . ((G _E ) . x)) = e by A23, A25, A26, A35, A36, GLIB_000: 14;

        

         A38: x in ( dom (h * (G _E ))) by A18, A31, A34, FUNCT_1: 11;

        then

         A39: x in ( dom g) by A30, RELAT_1: 57;

        y = ((h * (G _E )) . x) by A37, A38, FUNCT_1: 12

        .= (g . x) by A30, FUNCT_1: 49;

        hence y in ( rng g) by A39, FUNCT_1:def 3;

      end;

      then

       A40: ( rng g) = E2 by TARSKI: 2;

      then

      reconsider g as PartFunc of ( the_Edges_of G3), ( the_Edges_of G4) by A5, A21, RELSET_1: 4;

      now

        hereby

          let e be object;

          set v = (( the_Source_of G3) . e), w = (( the_Target_of G3) . e);

          assume e in ( dom g);

          then e Joins (v,w,G3) by GLIB_000:def 13;

          then v in ( the_Vertices_of G3) & w in ( the_Vertices_of G3) by GLIB_000: 13;

          then v in ( the_Vertices_of G1) & w in ( the_Vertices_of G1);

          hence v in ( dom f) & w in ( dom f) by A1, Def11;

        end;

        let e,v,w be object;

        assume

         A41: e in ( dom g) & v in ( dom f) & w in ( dom f);

        then

         A42: e in E1 & e in ( dom (h * (G _E ))) by RELAT_1: 57;

        then

         A43: e in ( dom (G _E )) & ((G _E ) . e) in ( dom h) by FUNCT_1: 11;

        assume

         A44: e Joins (v,w,G3);

        v is set & w is set by TARSKI: 1;

        then e Joins (v,w,G1) by A44, GLIB_000: 72;

        then

         A45: ((G _E ) . e) Joins ((f . v),(f . w),G2) by A41, A43, Th4;

        

         A46: (h . ((G _E ) . e)) in E2 & [((G _E ) . e), (h . ((G _E ) . e))] in ( EdgeAdjEqRel G2) by A18, A19, A43;

        then

        consider u1,u2 be object such that

         A47: ((G _E ) . e) Joins (u1,u2,G2) & (h . ((G _E ) . e)) Joins (u1,u2,G2) by GLIB_009:def 3;

        (h . ((G _E ) . e)) Joins ((f . v),(f . w),G2)

        proof

          per cases by A45, A47, GLIB_000: 15;

            suppose (f . v) = u1 & (f . w) = u2;

            hence thesis by A47;

          end;

            suppose (f . v) = u2 & (f . w) = u1;

            hence thesis by A47, GLIB_000: 14;

          end;

        end;

        then

         A48: (h . ((G _E ) . e)) Joins ((f . v),(f . w),G4) by A5, A46, GLIB_000: 73;

        (g . e) = ((h * (G _E )) . e) by A42, FUNCT_1: 49

        .= (h . ((G _E ) . e)) by A42, FUNCT_1: 12;

        hence (g . e) Joins ((f . v),(f . w),G4) by A48;

      end;

      then

      reconsider F = [f, g] as PGraphMapping of G3, G4 by Th8;

      ( dom f) = ( the_Vertices_of G3) by A1, A6, Def11;

      then

       A49: F is total by A5, A21;

      ( rng f) = ( the_Vertices_of G4) by A1, A6, Def12;

      then

       A50: F is onto by A5, A40;

      now

        let x1,x2 be object;

        assume

         A51: x1 in ( dom g) & x2 in ( dom g) & (g . x1) = (g . x2);

        then

         A52: x1 in E1 & x1 in ( dom (h * (G _E ))) & x2 in E1 & x2 in ( dom (h * (G _E ))) by RELAT_1: 57;

        then

         A53: x1 in ( dom (G _E )) & ((G _E ) . x1) in ( dom h) & x2 in ( dom (G _E )) & ((G _E ) . x2) in ( dom h) by FUNCT_1: 11;

        then

         A54: (h . ((G _E ) . x1)) in E2 & [((G _E ) . x1), (h . ((G _E ) . x1))] in ( EdgeAdjEqRel G2) & [((G _E ) . x2), (h . ((G _E ) . x2))] in ( EdgeAdjEqRel G2) by A18, A19;

        then

        consider v1,v2 be object such that

         A55: ((G _E ) . x1) Joins (v1,v2,G2) & (h . ((G _E ) . x1)) Joins (v1,v2,G2) by GLIB_009:def 3;

        ((G _E ) . x1) in ( rng (G _E )) by A53, FUNCT_1: 3;

        then (( the_Source_of G2) . ((G _E ) . x1)) in ( rng (G _V )) & (( the_Target_of G2) . ((G _E ) . x1)) in ( rng (G _V )) by Th6;

        then

         A56: v1 in ( rng (G _V )) & v2 in ( rng (G _V )) by A55, GLIB_000:def 13;

        then

        consider u1 be object such that

         A57: u1 in ( dom (G _V )) & ((G _V ) . u1) = v1 by FUNCT_1:def 3;

        consider u2 be object such that

         A58: u2 in ( dom (G _V )) & ((G _V ) . u2) = v2 by A56, FUNCT_1:def 3;

        

         A59: x1 Joins (u1,u2,G1) by A1, A53, A55, A57, A58, Def15;

        (h . ((G _E ) . x1)) = ((h * (G _E )) . x1) by A52, FUNCT_1: 12

        .= (g . x2) by A51, A52, FUNCT_1: 49

        .= ((h * (G _E )) . x2) by A52, FUNCT_1: 49

        .= (h . ((G _E ) . x2)) by A52, FUNCT_1: 12;

        then

        consider w1,w2 be object such that

         A60: ((G _E ) . x2) Joins (w1,w2,G2) & (h . ((G _E ) . x1)) Joins (w1,w2,G2) by A54, GLIB_009:def 3;

        ((G _E ) . x2) Joins (v1,v2,G2)

        proof

          per cases by A55, A60, GLIB_000: 15;

            suppose v1 = w1 & v2 = w2;

            hence thesis by A60;

          end;

            suppose v1 = w2 & v2 = w1;

            hence thesis by A60, GLIB_000: 14;

          end;

        end;

        then

         A61: x2 Joins (u1,u2,G1) by A1, A53, A57, A58, Def15;

        then

        consider e be object such that e Joins (u1,u2,G1) & e in E1 and

         A62: for e9 be object st e9 Joins (u1,u2,G1) & e9 in E1 holds e9 = e by GLIB_009:def 5;

        x1 = e & x2 = e by A52, A59, A61, A62;

        hence x1 = x2;

      end;

      then F is one-to-one by A1, FUNCT_1:def 4;

      hence thesis by A49, A50;

    end;

    theorem :: GLIB_010:169

    for G1 be _Graph, G2,G3 be removeParallelEdges of G1 holds G3 is G2 -isomorphic

    proof

      let G1 be _Graph, G2,G3 be removeParallelEdges of G1;

      G1 is G1 -isomorphic by Th53;

      hence thesis by Th168;

    end;

    theorem :: GLIB_010:170

    

     Th170: for G1 be _Graph, G2 be G1 -Disomorphic _Graph holds for G3 be removeDParallelEdges of G1 holds for G4 be removeDParallelEdges of G2 holds G4 is G3 -Disomorphic

    proof

      let G1 be _Graph, G2 be G1 -Disomorphic _Graph;

      let G3 be removeDParallelEdges of G1;

      let G4 be removeDParallelEdges of G2;

      consider G be PGraphMapping of G1, G2 such that

       A1: G is Disomorphism by Def24;

      reconsider G as directed PGraphMapping of G1, G2 by A1;

      consider E1 be RepDEdgeSelection of G1 such that

       A2: G3 is inducedSubgraph of G1, ( the_Vertices_of G1), E1 by GLIB_009:def 8;

      consider E2 be RepDEdgeSelection of G2 such that

       A3: G4 is inducedSubgraph of G2, ( the_Vertices_of G2), E2 by GLIB_009:def 8;

      

       A4: (G1 .edgesBetween ( the_Vertices_of G1)) = ( the_Edges_of G1) & (G2 .edgesBetween ( the_Vertices_of G2)) = ( the_Edges_of G2) by GLIB_000: 34;

      ( the_Vertices_of G1) c= ( the_Vertices_of G1) & ( the_Vertices_of G2) c= ( the_Vertices_of G2);

      then

       A5: ( the_Edges_of G3) = E1 & ( the_Edges_of G4) = E2 by A2, A3, A4, GLIB_000:def 37;

      

       A6: ( the_Vertices_of G3) = ( the_Vertices_of G1) & ( the_Vertices_of G4) = ( the_Vertices_of G2) by GLIB_000:def 33;

      then

      reconsider f = (G _V ) as PartFunc of ( the_Vertices_of G3), ( the_Vertices_of G4);

      defpred P[ object, object] means $2 in E2 & [$1, $2] in ( DEdgeAdjEqRel G2);

      

       A7: for x,y1,y2 be object st x in ( the_Edges_of G2) & P[x, y1] & P[x, y2] holds y1 = y2

      proof

        let x,y1,y2 be object;

        set v1 = (( the_Source_of G2) . x), v2 = (( the_Target_of G2) . x);

        assume x in ( the_Edges_of G2);

        then

         A8: x DJoins (v1,v2,G2) by GLIB_000:def 14;

        then

        consider e be object such that e DJoins (v1,v2,G2) & e in E2 and

         A9: for e9 be object st e9 DJoins (v1,v2,G2) & e9 in E2 holds e9 = e by GLIB_009:def 6;

        assume

         A10: P[x, y1];

        then

        consider w1,w2 be object such that

         A11: x DJoins (w1,w2,G2) & y1 DJoins (w1,w2,G2) by GLIB_009:def 4;

        w1 = v1 & w2 = v2 by A8, A11, GLIB_009: 6;

        then

         A12: y1 = e by A9, A10, A11;

        assume

         A13: P[x, y2];

        then

        consider u1,u2 be object such that

         A14: x DJoins (u1,u2,G2) & y2 DJoins (u1,u2,G2) by GLIB_009:def 4;

        u1 = v1 & u2 = v2 by A8, A14, GLIB_009: 6;

        then y2 DJoins (v1,v2,G2) by A14;

        hence y1 = y2 by A9, A12, A13;

      end;

      

       A15: for x be object st x in ( the_Edges_of G2) holds ex y be object st P[x, y]

      proof

        let x be object;

        set v1 = (( the_Source_of G2) . x), v2 = (( the_Target_of G2) . x);

        assume x in ( the_Edges_of G2);

        then

         A16: x DJoins (v1,v2,G2) by GLIB_000:def 14;

        then

        consider e be object such that

         A17: e DJoins (v1,v2,G2) & e in E2 and for e9 be object st e9 DJoins (v1,v2,G2) & e9 in E2 holds e9 = e by GLIB_009:def 6;

        take e;

        thus thesis by A16, A17, GLIB_009:def 4;

      end;

      consider h be Function such that

       A18: ( dom h) = ( the_Edges_of G2) and

       A19: for x be object st x in ( the_Edges_of G2) holds P[x, (h . x)] from FUNCT_1:sch 2( A7, A15);

      set g = ((h * (G _E )) | E1);

      ( dom h) = ( rng (G _E )) by A1, A18, Def12;

      then

       A20: ( dom (h * (G _E ))) = ( dom (G _E )) & ( rng (h * (G _E ))) = ( rng h) by RELAT_1: 27, RELAT_1: 28;

      

      then

       A21: ( dom g) = (( dom (G _E )) /\ E1) by RELAT_1: 61

      .= (( the_Edges_of G1) /\ E1) by A1, Def11

      .= E1 by XBOOLE_1: 28;

      now

        let y be object;

        hereby

          assume y in ( rng g);

          then y in ( rng h) by A20, RELAT_1: 70, TARSKI:def 3;

          then

          consider x be object such that

           A22: x in ( dom h) & y = (h . x) by FUNCT_1:def 3;

          thus y in E2 by A18, A19, A22;

        end;

        assume

         A23: y in E2;

        then

         A24: y in ( the_Edges_of G2);

        set v1 = (( the_Source_of G2) . y), v2 = (( the_Target_of G2) . y);

        

         A25: y DJoins (v1,v2,G2) by A24, GLIB_000:def 14;

        then

        consider e be object such that e DJoins (v1,v2,G2) & e in E2 and

         A26: for e9 be object st e9 DJoins (v1,v2,G2) & e9 in E2 holds e9 = e by GLIB_009:def 6;

        y in ( rng (G _E )) by A1, A24, Def12;

        then

        consider x0 be object such that

         A27: x0 in ( dom (G _E )) & ((G _E ) . x0) = y by FUNCT_1:def 3;

        set u1 = (( the_Source_of G1) . x0), u2 = (( the_Target_of G1) . x0);

        

         A28: u1 in ( dom (G _V )) & u2 in ( dom (G _V )) by A27, Th5;

        

         A29: x0 DJoins (u1,u2,G1) by A27, GLIB_000:def 14;

        then

        consider x be object such that

         A30: x DJoins (u1,u2,G1) & x in E1 and for e9 be object st e9 DJoins (u1,u2,G1) & e9 in E1 holds e9 = x by GLIB_009:def 6;

        x in ( the_Edges_of G1) by A30;

        then

         A31: x in ( dom (G _E )) by A1, Def11;

        then

         A32: ((G _E ) . x) DJoins (((G _V ) . u1),((G _V ) . u2),G2) by A28, A30, Def14;

        ((G _E ) . x0) DJoins (((G _V ) . u1),((G _V ) . u2),G2) by A27, A28, A29, Def14;

        then ((G _V ) . u1) = v1 & ((G _V ) . u2) = v2 by A25, A27, GLIB_009: 6;

        then

         A33: ((G _E ) . x) DJoins (v1,v2,G2) by A32;

        

         A34: ((G _E ) . x) in ( the_Edges_of G2) by A33, GLIB_000:def 14;

        then

         A35: (h . ((G _E ) . x)) in E2 & [((G _E ) . x), (h . ((G _E ) . x))] in ( DEdgeAdjEqRel G2) by A19;

        then

        consider w1,w2 be object such that

         A36: ((G _E ) . x) DJoins (w1,w2,G2) & (h . ((G _E ) . x)) DJoins (w1,w2,G2) by GLIB_009:def 4;

        v1 = w1 & v2 = w2 by A33, A36, GLIB_009: 6;

        then

         A37: y = e & (h . ((G _E ) . x)) = e by A23, A25, A26, A35, A36;

        

         A38: x in ( dom (h * (G _E ))) by A18, A31, A34, FUNCT_1: 11;

        then

         A39: x in ( dom g) by A30, RELAT_1: 57;

        y = ((h * (G _E )) . x) by A37, A38, FUNCT_1: 12

        .= (g . x) by A30, FUNCT_1: 49;

        hence y in ( rng g) by A39, FUNCT_1:def 3;

      end;

      then

       A40: ( rng g) = E2 by TARSKI: 2;

      then

      reconsider g as PartFunc of ( the_Edges_of G3), ( the_Edges_of G4) by A5, A21, RELSET_1: 4;

      now

        hereby

          let e be object;

          set v = (( the_Source_of G3) . e), w = (( the_Target_of G3) . e);

          assume e in ( dom g);

          then e Joins (v,w,G3) by GLIB_000:def 13;

          then v in ( the_Vertices_of G3) & w in ( the_Vertices_of G3) by GLIB_000: 13;

          then v in ( the_Vertices_of G1) & w in ( the_Vertices_of G1);

          hence v in ( dom f) & w in ( dom f) by A1, Def11;

        end;

        let e,v,w be object;

        assume

         A41: e in ( dom g) & v in ( dom f) & w in ( dom f);

        then

         A42: e in E1 & e in ( dom (h * (G _E ))) by RELAT_1: 57;

        then

         A43: e in ( dom (G _E )) & ((G _E ) . e) in ( dom h) by FUNCT_1: 11;

        assume

         A44: e DJoins (v,w,G3);

        v is set & w is set by TARSKI: 1;

        then e DJoins (v,w,G1) by A44, GLIB_000: 72;

        then

         A45: ((G _E ) . e) DJoins ((f . v),(f . w),G2) by A41, A43, Def14;

        

         A46: (h . ((G _E ) . e)) in E2 & [((G _E ) . e), (h . ((G _E ) . e))] in ( DEdgeAdjEqRel G2) by A18, A19, A43;

        then

        consider u1,u2 be object such that

         A47: ((G _E ) . e) DJoins (u1,u2,G2) & (h . ((G _E ) . e)) DJoins (u1,u2,G2) by GLIB_009:def 4;

        u1 = (f . v) & u2 = (f . w) by A45, A47, GLIB_009: 6;

        then (h . ((G _E ) . e)) DJoins ((f . v),(f . w),G2) by A47;

        then

         A48: (h . ((G _E ) . e)) DJoins ((f . v),(f . w),G4) by A5, A46, GLIB_000: 73;

        (g . e) = ((h * (G _E )) . e) by A42, FUNCT_1: 49

        .= (h . ((G _E ) . e)) by A42, FUNCT_1: 12;

        hence (g . e) DJoins ((f . v),(f . w),G4) by A48;

      end;

      then

      reconsider F = [f, g] as directed PGraphMapping of G3, G4 by Th30;

      ( dom f) = ( the_Vertices_of G3) by A1, A6, Def11;

      then

       A49: F is total by A5, A21;

      ( rng f) = ( the_Vertices_of G4) by A1, A6, Def12;

      then

       A50: F is onto by A5, A40;

      now

        let x1,x2 be object;

        assume

         A51: x1 in ( dom g) & x2 in ( dom g) & (g . x1) = (g . x2);

        then

         A52: x1 in E1 & x1 in ( dom (h * (G _E ))) & x2 in E1 & x2 in ( dom (h * (G _E ))) by RELAT_1: 57;

        then

         A53: x1 in ( dom (G _E )) & ((G _E ) . x1) in ( dom h) & x2 in ( dom (G _E )) & ((G _E ) . x2) in ( dom h) by FUNCT_1: 11;

        then

         A54: (h . ((G _E ) . x1)) in E2 & [((G _E ) . x1), (h . ((G _E ) . x1))] in ( DEdgeAdjEqRel G2) & [((G _E ) . x2), (h . ((G _E ) . x2))] in ( DEdgeAdjEqRel G2) by A18, A19;

        then

        consider v1,v2 be object such that

         A55: ((G _E ) . x1) DJoins (v1,v2,G2) & (h . ((G _E ) . x1)) DJoins (v1,v2,G2) by GLIB_009:def 4;

        ((G _E ) . x1) in ( rng (G _E )) by A53, FUNCT_1: 3;

        then (( the_Source_of G2) . ((G _E ) . x1)) in ( rng (G _V )) & (( the_Target_of G2) . ((G _E ) . x1)) in ( rng (G _V )) by Th6;

        then

         A56: v1 in ( rng (G _V )) & v2 in ( rng (G _V )) by A55, GLIB_000:def 14;

        then

        consider u1 be object such that

         A57: u1 in ( dom (G _V )) & ((G _V ) . u1) = v1 by FUNCT_1:def 3;

        consider u2 be object such that

         A58: u2 in ( dom (G _V )) & ((G _V ) . u2) = v2 by A56, FUNCT_1:def 3;

        

         A59: x1 DJoins (u1,u2,G1) by A1, A53, A55, A57, A58, Def17;

        (h . ((G _E ) . x1)) = ((h * (G _E )) . x1) by A52, FUNCT_1: 12

        .= (g . x2) by A51, A52, FUNCT_1: 49

        .= ((h * (G _E )) . x2) by A52, FUNCT_1: 49

        .= (h . ((G _E ) . x2)) by A52, FUNCT_1: 12;

        then

        consider w1,w2 be object such that

         A60: ((G _E ) . x2) DJoins (w1,w2,G2) & (h . ((G _E ) . x1)) DJoins (w1,w2,G2) by A54, GLIB_009:def 4;

        v1 = w1 & v2 = w2 by A55, A60, GLIB_009: 6;

        then ((G _E ) . x2) DJoins (v1,v2,G2) by A60;

        then

         A61: x2 DJoins (u1,u2,G1) by A1, A53, A57, A58, Def17;

        then

        consider e be object such that e DJoins (u1,u2,G1) & e in E1 and

         A62: for e9 be object st e9 DJoins (u1,u2,G1) & e9 in E1 holds e9 = e by GLIB_009:def 6;

        x1 = e & x2 = e by A52, A59, A61, A62;

        hence x1 = x2;

      end;

      then F is one-to-one by A1, FUNCT_1:def 4;

      hence thesis by A49, A50;

    end;

    theorem :: GLIB_010:171

    for G1 be _Graph, G2,G3 be removeDParallelEdges of G1 holds G3 is G2 -Disomorphic

    proof

      let G1 be _Graph, G2,G3 be removeDParallelEdges of G1;

      G1 is G1 -Disomorphic by Th53;

      hence thesis by Th170;

    end;

    theorem :: GLIB_010:172

    

     Th172: for G1 be _Graph, G2 be G1 -isomorphic _Graph holds for G3 be SimpleGraph of G1, G4 be SimpleGraph of G2 holds G4 is G3 -isomorphic

    proof

      let G1 be _Graph, G2 be G1 -isomorphic _Graph;

      let G3 be SimpleGraph of G1, G4 be SimpleGraph of G2;

      set G5 = the removeLoops of G1, G6 = the removeLoops of G2;

      

       A1: G6 is G5 -isomorphic by Th166;

      G3 is removeParallelEdges of G5 & G4 is removeParallelEdges of G6 by GLIB_009: 121;

      hence thesis by A1, Th168;

    end;

    theorem :: GLIB_010:173

    for G1 be _Graph, G2,G3 be SimpleGraph of G1 holds G3 is G2 -isomorphic

    proof

      let G1 be _Graph, G2,G3 be SimpleGraph of G1;

      G1 is G1 -isomorphic by Th53;

      hence thesis by Th172;

    end;

    theorem :: GLIB_010:174

    

     Th174: for G1 be _Graph, G2 be G1 -Disomorphic _Graph holds for G3 be DSimpleGraph of G1, G4 be DSimpleGraph of G2 holds G4 is G3 -Disomorphic

    proof

      let G1 be _Graph, G2 be G1 -Disomorphic _Graph;

      let G3 be DSimpleGraph of G1, G4 be DSimpleGraph of G2;

      set G5 = the removeLoops of G1, G6 = the removeLoops of G2;

      

       A1: G6 is G5 -Disomorphic by Th167;

      G3 is removeDParallelEdges of G5 & G4 is removeDParallelEdges of G6 by GLIB_009: 122;

      hence thesis by A1, Th170;

    end;

    theorem :: GLIB_010:175

    for G1 be _Graph, G2,G3 be DSimpleGraph of G1 holds G3 is G2 -Disomorphic

    proof

      let G1 be _Graph, G2,G3 be DSimpleGraph of G1;

      G1 is G1 -Disomorphic by Th53;

      hence thesis by Th174;

    end;

    theorem :: GLIB_010:176

    for G1,G2 be _trivial loopless _Graph holds for F be non empty PGraphMapping of G1, G2 holds F is Disomorphism & F = [( the Vertex of G1 .--> the Vertex of G2), {} ]

    proof

      let G1,G2 be _trivial loopless _Graph;

      let F be non empty PGraphMapping of G1, G2;

      thus F is Disomorphism;

      

       A1: (F _E ) = {} ;

      F is total onto;

      then

       A2: ( dom (F _V )) = ( the_Vertices_of G1) & ( rng (F _V )) = ( the_Vertices_of G2);

      consider v1 be Vertex of G1 such that

       A3: ( the_Vertices_of G1) = {v1} by GLIB_000: 22;

      consider v2 be Vertex of G2 such that

       A4: ( the_Vertices_of G2) = {v2} by GLIB_000: 22;

      ( dom (F _V )) = { the Vertex of G1} & ( rng (F _V )) = { the Vertex of G2} by A2, A3, A4, TARSKI:def 1;

      then (F _V ) = ( the Vertex of G1 .--> the Vertex of G2) by FUNCT_4: 112;

      hence thesis by A1;

    end;

    theorem :: GLIB_010:177

    for G1,G2 be _trivial _Graph st (G1 .size() ) = (G2 .size() ) holds ex F be PGraphMapping of G1, G2 st F is Disomorphism

    proof

      let G1,G2 be _trivial _Graph;

      assume (G1 .size() ) = (G2 .size() );

      then (G1 .size() ) = ( card ( the_Edges_of G2)) by GLIB_000:def 25;

      then ( card ( the_Edges_of G1)) = ( card ( the_Edges_of G2)) by GLIB_000:def 25;

      then

      consider g be Function such that

       A1: g is one-to-one & ( dom g) = ( the_Edges_of G1) & ( rng g) = ( the_Edges_of G2) by CARD_1: 5, WELLORD2:def 4;

      reconsider g as Function of ( the_Edges_of G1), ( the_Edges_of G2) by A1, FUNCT_2: 1;

      consider v be Vertex of G1 such that

       A2: ( the_Vertices_of G1) = {v} by GLIB_000: 22;

      consider w be Vertex of G2 such that

       A3: ( the_Vertices_of G2) = {w} by GLIB_000: 22;

      reconsider V = {v} as Subset of ( the_Vertices_of G1);

      reconsider f = (V --> w) as PartFunc of ( the_Vertices_of G1), ( the_Vertices_of G2);

      now

        

         A4: for e be object st e in ( dom g) holds (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f) by A2, FUNCT_2: 5;

        hence for e be object holds e in ( dom g) implies (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f);

        let e,v1,w1 be object;

        assume

         A5: e in ( dom g) & v1 in ( dom f) & w1 in ( dom f);

        then

         A6: v1 = v & w1 = v by TARSKI:def 1;

        

         A7: (f . v1) = w & (f . w1) = w by A5, FUNCOP_1: 7;

        (( the_Source_of G1) . e) in ( dom f) & (( the_Target_of G1) . e) in ( dom f) by A5, A4;

        then (( the_Source_of G1) . e) = v1 & (( the_Target_of G1) . e) = w1 by A6, TARSKI:def 1;

        then

         A8: e Joins (v1,w1,G1) by A5, GLIB_000:def 13;

        

         A9: (g . e) in ( the_Edges_of G2) by A1, A5, FUNCT_1: 3;

        then (( the_Source_of G2) . (g . e)) in ( the_Vertices_of G2) & (( the_Target_of G2) . (g . e)) in ( the_Vertices_of G2) by FUNCT_2: 5;

        then (( the_Source_of G2) . (g . e)) = w & (( the_Target_of G2) . (g . e)) = w by A3, TARSKI:def 1;

        then (g . e) Joins ((f . v1),(f . w1),G2) by A7, A9, GLIB_000:def 13;

        hence e Joins (v1,w1,G1) iff (g . e) Joins ((f . v1),(f . w1),G2) by A8;

      end;

      then

      reconsider F = [f, g] as semi-continuous PGraphMapping of G1, G2 by Th31;

      take F;

      

       A10: F is total by A1, A2;

      

       A11: f = (v .--> w) by FUNCOP_1:def 9;

      then

       A12: F is onto by A1, A3, FUNCOP_1: 88;

      F is one-to-one by A1, A11;

      hence thesis by A10, A12;

    end;

    theorem :: GLIB_010:178

    for G1,G2 be _trivial loopless _Graph holds G2 is G1 -DisomorphicG1 -isomorphic

    proof

      let G1,G2 be _trivial loopless _Graph;

      set F = the non empty PGraphMapping of G1, G2;

      F is directed isomorphism;

      hence G2 is G1 -Disomorphic;

      hence G2 is G1 -isomorphic;

    end;