let G1, G2, G3 be Graph; :: thesis: ( the Source of G1 tolerates the Source of G2 & the Target of G1 tolerates the Target of G2 & the Source of G1 tolerates the Source of G3 & the Target of G1 tolerates the Target of G3 & the Source of G2 tolerates the Source of G3 & the Target of G2 tolerates the Target of G3 implies (G1 \/ G2) \/ G3 = G1 \/ (G2 \/ G3) )
assume A1:
( the Source of G1 tolerates the Source of G2 & the Target of G1 tolerates the Target of G2 & the Source of G1 tolerates the Source of G3 & the Target of G1 tolerates the Target of G3 & the Source of G2 tolerates the Source of G3 & the Target of G2 tolerates the Target of G3 )
; :: thesis: (G1 \/ G2) \/ G3 = G1 \/ (G2 \/ G3)
A2:
for v being set st v in (dom the Source of (G1 \/ G2)) /\ (dom the Source of G3) holds
the Source of (G1 \/ G2) . v = the Source of G3 . v
for v being set st v in (dom the Target of (G1 \/ G2)) /\ (dom the Target of G3) holds
the Target of (G1 \/ G2) . v = the Target of G3 . v
then A19:
( the Source of (G1 \/ G2) tolerates the Source of G3 & the Target of (G1 \/ G2) tolerates the Target of G3 )
by A2, PARTFUN1:def 6;
A20:
for v being set st v in (dom the Source of G1) /\ (dom the Source of (G2 \/ G3)) holds
the Source of G1 . v = the Source of (G2 \/ G3) . v
for v being set st v in (dom the Target of G1) /\ (dom the Target of (G2 \/ G3)) holds
the Target of G1 . v = the Target of (G2 \/ G3) . v
then A41:
( the Source of G1 tolerates the Source of (G2 \/ G3) & the Target of G1 tolerates the Target of (G2 \/ G3) )
by A20, PARTFUN1:def 6;
A42: the carrier' of ((G1 \/ G2) \/ G3) =
the carrier' of (G1 \/ G2) \/ the carrier' of G3
by A19, Def2
.=
(the carrier' of G1 \/ the carrier' of G2) \/ the carrier' of G3
by A1, Def2
.=
the carrier' of G1 \/ (the carrier' of G2 \/ the carrier' of G3)
by XBOOLE_1:4
.=
the carrier' of G1 \/ the carrier' of (G2 \/ G3)
by A1, Def2
.=
the carrier' of (G1 \/ (G2 \/ G3))
by A41, Def2
;
A43: the carrier of ((G1 \/ G2) \/ G3) =
the carrier of (G1 \/ G2) \/ the carrier of G3
by A19, Def2
.=
(the carrier of G1 \/ the carrier of G2) \/ the carrier of G3
by A1, Def2
.=
the carrier of G1 \/ (the carrier of G2 \/ the carrier of G3)
by XBOOLE_1:4
.=
the carrier of G1 \/ the carrier of (G2 \/ G3)
by A1, Def2
.=
the carrier of (G1 \/ (G2 \/ G3))
by A41, Def2
;
A44: dom the Source of ((G1 \/ G2) \/ G3) =
the carrier' of (G1 \/ (G2 \/ G3))
by A42, FUNCT_2:def 1
.=
dom the Source of (G1 \/ (G2 \/ G3))
by FUNCT_2:def 1
;
for v being set st v in dom the Source of ((G1 \/ G2) \/ G3) holds
the Source of ((G1 \/ G2) \/ G3) . v = the Source of (G1 \/ (G2 \/ G3)) . v
proof
let v be
set ;
:: thesis: ( v in dom the Source of ((G1 \/ G2) \/ G3) implies the Source of ((G1 \/ G2) \/ G3) . v = the Source of (G1 \/ (G2 \/ G3)) . v )
assume A45:
v in dom the
Source of
((G1 \/ G2) \/ G3)
;
:: thesis: the Source of ((G1 \/ G2) \/ G3) . v = the Source of (G1 \/ (G2 \/ G3)) . v
dom the
Source of
((G1 \/ G2) \/ G3) =
the
carrier' of
((G1 \/ G2) \/ G3)
by FUNCT_2:def 1
.=
the
carrier' of
(G1 \/ G2) \/ the
carrier' of
G3
by A19, Def2
.=
(the carrier' of G1 \/ the carrier' of G2) \/ the
carrier' of
G3
by A1, Def2
;
then A46:
(
v in the
carrier' of
G1 \/ the
carrier' of
G2 or
v in the
carrier' of
G3 )
by A45, XBOOLE_0:def 3;
A49:
now assume A50:
v in the
carrier' of
G2
;
:: thesis: the Source of ((G1 \/ G2) \/ G3) . v = the Source of (G1 \/ (G2 \/ G3)) . v
the
carrier' of
G2 c= the
carrier' of
G1 \/ the
carrier' of
G2
by XBOOLE_1:7;
then A51:
the
carrier' of
G2 c= the
carrier' of
(G1 \/ G2)
by A1, Def2;
the
carrier' of
G2 c= the
carrier' of
G2 \/ the
carrier' of
G3
by XBOOLE_1:7;
then A52:
the
carrier' of
G2 c= the
carrier' of
(G2 \/ G3)
by A1, Def2;
thus the
Source of
((G1 \/ G2) \/ G3) . v =
the
Source of
(G1 \/ G2) . v
by A19, A50, A51, Def2
.=
the
Source of
G2 . v
by A1, A50, Def2
.=
the
Source of
(G2 \/ G3) . v
by A1, A50, Def2
.=
the
Source of
(G1 \/ (G2 \/ G3)) . v
by A41, A50, A52, Def2
;
:: thesis: verum end;
hence
the
Source of
((G1 \/ G2) \/ G3) . v = the
Source of
(G1 \/ (G2 \/ G3)) . v
by A46, A47, A49, XBOOLE_0:def 3;
:: thesis: verum
end;
then A55:
the Source of ((G1 \/ G2) \/ G3) = the Source of (G1 \/ (G2 \/ G3))
by A44, FUNCT_1:9;
A56: dom the Target of ((G1 \/ G2) \/ G3) =
the carrier' of (G1 \/ (G2 \/ G3))
by A42, FUNCT_2:def 1
.=
dom the Target of (G1 \/ (G2 \/ G3))
by FUNCT_2:def 1
;
for v being set st v in dom the Target of ((G1 \/ G2) \/ G3) holds
the Target of ((G1 \/ G2) \/ G3) . v = the Target of (G1 \/ (G2 \/ G3)) . v
proof
let v be
set ;
:: thesis: ( v in dom the Target of ((G1 \/ G2) \/ G3) implies the Target of ((G1 \/ G2) \/ G3) . v = the Target of (G1 \/ (G2 \/ G3)) . v )
assume A57:
v in dom the
Target of
((G1 \/ G2) \/ G3)
;
:: thesis: the Target of ((G1 \/ G2) \/ G3) . v = the Target of (G1 \/ (G2 \/ G3)) . v
dom the
Target of
((G1 \/ G2) \/ G3) =
the
carrier' of
((G1 \/ G2) \/ G3)
by FUNCT_2:def 1
.=
the
carrier' of
(G1 \/ G2) \/ the
carrier' of
G3
by A19, Def2
.=
(the carrier' of G1 \/ the carrier' of G2) \/ the
carrier' of
G3
by A1, Def2
;
then A58:
(
v in the
carrier' of
G1 \/ the
carrier' of
G2 or
v in the
carrier' of
G3 )
by A57, XBOOLE_0:def 3;
A61:
now assume A62:
v in the
carrier' of
G2
;
:: thesis: the Target of ((G1 \/ G2) \/ G3) . v = the Target of (G1 \/ (G2 \/ G3)) . v
the
carrier' of
G2 c= the
carrier' of
G1 \/ the
carrier' of
G2
by XBOOLE_1:7;
then A63:
the
carrier' of
G2 c= the
carrier' of
(G1 \/ G2)
by A1, Def2;
the
carrier' of
G2 c= the
carrier' of
G2 \/ the
carrier' of
G3
by XBOOLE_1:7;
then A64:
the
carrier' of
G2 c= the
carrier' of
(G2 \/ G3)
by A1, Def2;
thus the
Target of
((G1 \/ G2) \/ G3) . v =
the
Target of
(G1 \/ G2) . v
by A19, A62, A63, Def2
.=
the
Target of
G2 . v
by A1, A62, Def2
.=
the
Target of
(G2 \/ G3) . v
by A1, A62, Def2
.=
the
Target of
(G1 \/ (G2 \/ G3)) . v
by A41, A62, A64, Def2
;
:: thesis: verum end;
hence
the
Target of
((G1 \/ G2) \/ G3) . v = the
Target of
(G1 \/ (G2 \/ G3)) . v
by A58, A59, A61, XBOOLE_0:def 3;
:: thesis: verum
end;
hence
(G1 \/ G2) \/ G3 = G1 \/ (G2 \/ G3)
by A42, A43, A55, A56, FUNCT_1:9; :: thesis: verum