let G1, G2 be Graph; :: thesis: ( the Source of G1 tolerates the Source of G2 & the Target of G1 tolerates the Target of G2 implies G1 \/ G2 = G2 \/ G1 )
assume A1: ( the Source of G1 tolerates the Source of G2 & the Target of G1 tolerates the Target of G2 ) ; :: thesis: G1 \/ G2 = G2 \/ G1
then A2: the carrier of (G1 \/ G2) = the carrier of G2 \/ the carrier of G1 by Def2
.= the carrier of (G2 \/ G1) by A1, Def2 ;
A3: the carrier' of (G1 \/ G2) = the carrier' of G2 \/ the carrier' of G1 by A1, Def2
.= the carrier' of (G2 \/ G1) by A1, Def2 ;
A6: dom the Source of (G1 \/ G2) = the carrier' of (G2 \/ G1) by A3, FUNCT_2:def 1
.= dom the Source of (G2 \/ G1) by FUNCT_2:def 1 ;
for v being set st v in dom the Source of (G1 \/ G2) holds
the Source of (G1 \/ G2) . v = the Source of (G2 \/ G1) . v
proof
let v be set ; :: thesis: ( v in dom the Source of (G1 \/ G2) implies the Source of (G1 \/ G2) . v = the Source of (G2 \/ G1) . v )
assume v in dom the Source of (G1 \/ G2) ; :: thesis: the Source of (G1 \/ G2) . v = the Source of (G2 \/ G1) . v
then v in the carrier' of (G1 \/ G2) ;
then A7: v in the carrier' of G1 \/ the carrier' of G2 by A1, Def2;
A8: now
assume A9: v in the carrier' of G1 ; :: thesis: the Source of (G1 \/ G2) . v = the Source of (G2 \/ G1) . v
hence the Source of (G1 \/ G2) . v = the Source of G1 . v by A1, Def2
.= the Source of (G2 \/ G1) . v by A1, A9, Def2 ;
:: thesis: verum
end;
now
assume A10: v in the carrier' of G2 ; :: thesis: the Source of (G1 \/ G2) . v = the Source of (G2 \/ G1) . v
hence the Source of (G1 \/ G2) . v = the Source of G2 . v by A1, Def2
.= the Source of (G2 \/ G1) . v by A1, A10, Def2 ;
:: thesis: verum
end;
hence the Source of (G1 \/ G2) . v = the Source of (G2 \/ G1) . v by A7, A8, XBOOLE_0:def 3; :: thesis: verum
end;
then A11: the Source of (G1 \/ G2) = the Source of (G2 \/ G1) by A6, FUNCT_1:9;
A12: dom the Target of (G1 \/ G2) = the carrier' of (G2 \/ G1) by A3, FUNCT_2:def 1
.= dom the Target of (G2 \/ G1) by FUNCT_2:def 1 ;
for v being set st v in dom the Target of (G1 \/ G2) holds
the Target of (G1 \/ G2) . v = the Target of (G2 \/ G1) . v
proof
let v be set ; :: thesis: ( v in dom the Target of (G1 \/ G2) implies the Target of (G1 \/ G2) . v = the Target of (G2 \/ G1) . v )
assume v in dom the Target of (G1 \/ G2) ; :: thesis: the Target of (G1 \/ G2) . v = the Target of (G2 \/ G1) . v
then v in the carrier' of (G1 \/ G2) ;
then A13: v in the carrier' of G1 \/ the carrier' of G2 by A1, Def2;
A14: now
assume A15: v in the carrier' of G1 ; :: thesis: the Target of (G1 \/ G2) . v = the Target of (G2 \/ G1) . v
hence the Target of (G1 \/ G2) . v = the Target of G1 . v by A1, Def2
.= the Target of (G2 \/ G1) . v by A1, A15, Def2 ;
:: thesis: verum
end;
now
assume A16: v in the carrier' of G2 ; :: thesis: the Target of (G1 \/ G2) . v = the Target of (G2 \/ G1) . v
hence the Target of (G1 \/ G2) . v = the Target of G2 . v by A1, Def2
.= the Target of (G2 \/ G1) . v by A1, A16, Def2 ;
:: thesis: verum
end;
hence the Target of (G1 \/ G2) . v = the Target of (G2 \/ G1) . v by A13, A14, XBOOLE_0:def 3; :: thesis: verum
end;
hence G1 \/ G2 = G2 \/ G1 by A2, A3, A11, A12, FUNCT_1:9; :: thesis: verum