let S1, S2, S be non empty non void Circuit-like ManySortedSign ; :: thesis: ( S = S1 +* S2 implies for A1 being non-empty Circuit of S1

for A2 being non-empty Circuit of S2

for A being non-empty Circuit of S st A1 tolerates A2 & A = A1 +* A2 holds

for s being State of A st s is stable holds

( ( for s1 being State of A1 st s1 = s | the carrier of S1 holds

s1 is stable ) & ( for s2 being State of A2 st s2 = s | the carrier of S2 holds

s2 is stable ) ) )

assume A1: S = S1 +* S2 ; :: thesis: for A1 being non-empty Circuit of S1

for A2 being non-empty Circuit of S2

for A being non-empty Circuit of S st A1 tolerates A2 & A = A1 +* A2 holds

for s being State of A st s is stable holds

( ( for s1 being State of A1 st s1 = s | the carrier of S1 holds

s1 is stable ) & ( for s2 being State of A2 st s2 = s | the carrier of S2 holds

s2 is stable ) )

A2: the carrier of S = the carrier of S1 \/ the carrier of S2 by A1, CIRCCOMB:def 2;

let A1 be non-empty Circuit of S1; :: thesis: for A2 being non-empty Circuit of S2

for A being non-empty Circuit of S st A1 tolerates A2 & A = A1 +* A2 holds

for s being State of A st s is stable holds

( ( for s1 being State of A1 st s1 = s | the carrier of S1 holds

s1 is stable ) & ( for s2 being State of A2 st s2 = s | the carrier of S2 holds

s2 is stable ) )

let A2 be non-empty Circuit of S2; :: thesis: for A being non-empty Circuit of S st A1 tolerates A2 & A = A1 +* A2 holds

for s being State of A st s is stable holds

( ( for s1 being State of A1 st s1 = s | the carrier of S1 holds

s1 is stable ) & ( for s2 being State of A2 st s2 = s | the carrier of S2 holds

s2 is stable ) )

let A be non-empty Circuit of S; :: thesis: ( A1 tolerates A2 & A = A1 +* A2 implies for s being State of A st s is stable holds

( ( for s1 being State of A1 st s1 = s | the carrier of S1 holds

s1 is stable ) & ( for s2 being State of A2 st s2 = s | the carrier of S2 holds

s2 is stable ) ) )

assume A3: ( A1 tolerates A2 & A = A1 +* A2 ) ; :: thesis: for s being State of A st s is stable holds

( ( for s1 being State of A1 st s1 = s | the carrier of S1 holds

s1 is stable ) & ( for s2 being State of A2 st s2 = s | the carrier of S2 holds

s2 is stable ) )

let s be State of A; :: thesis: ( s is stable implies ( ( for s1 being State of A1 st s1 = s | the carrier of S1 holds

s1 is stable ) & ( for s2 being State of A2 st s2 = s | the carrier of S2 holds

s2 is stable ) ) )

assume A4: s = Following s ; :: according to CIRCUIT2:def 6 :: thesis: ( ( for s1 being State of A1 st s1 = s | the carrier of S1 holds

s1 is stable ) & ( for s2 being State of A2 st s2 = s | the carrier of S2 holds

s2 is stable ) )

assume A7: s2 = s | the carrier of S2 ; :: thesis: s2 is stable

hence s2 = Following s2 by A8, FUNCT_1:2; :: according to CIRCUIT2:def 6 :: thesis: verum

for A2 being non-empty Circuit of S2

for A being non-empty Circuit of S st A1 tolerates A2 & A = A1 +* A2 holds

for s being State of A st s is stable holds

( ( for s1 being State of A1 st s1 = s | the carrier of S1 holds

s1 is stable ) & ( for s2 being State of A2 st s2 = s | the carrier of S2 holds

s2 is stable ) ) )

assume A1: S = S1 +* S2 ; :: thesis: for A1 being non-empty Circuit of S1

for A2 being non-empty Circuit of S2

for A being non-empty Circuit of S st A1 tolerates A2 & A = A1 +* A2 holds

for s being State of A st s is stable holds

( ( for s1 being State of A1 st s1 = s | the carrier of S1 holds

s1 is stable ) & ( for s2 being State of A2 st s2 = s | the carrier of S2 holds

s2 is stable ) )

A2: the carrier of S = the carrier of S1 \/ the carrier of S2 by A1, CIRCCOMB:def 2;

let A1 be non-empty Circuit of S1; :: thesis: for A2 being non-empty Circuit of S2

for A being non-empty Circuit of S st A1 tolerates A2 & A = A1 +* A2 holds

for s being State of A st s is stable holds

( ( for s1 being State of A1 st s1 = s | the carrier of S1 holds

s1 is stable ) & ( for s2 being State of A2 st s2 = s | the carrier of S2 holds

s2 is stable ) )

let A2 be non-empty Circuit of S2; :: thesis: for A being non-empty Circuit of S st A1 tolerates A2 & A = A1 +* A2 holds

for s being State of A st s is stable holds

( ( for s1 being State of A1 st s1 = s | the carrier of S1 holds

s1 is stable ) & ( for s2 being State of A2 st s2 = s | the carrier of S2 holds

s2 is stable ) )

let A be non-empty Circuit of S; :: thesis: ( A1 tolerates A2 & A = A1 +* A2 implies for s being State of A st s is stable holds

( ( for s1 being State of A1 st s1 = s | the carrier of S1 holds

s1 is stable ) & ( for s2 being State of A2 st s2 = s | the carrier of S2 holds

s2 is stable ) ) )

assume A3: ( A1 tolerates A2 & A = A1 +* A2 ) ; :: thesis: for s being State of A st s is stable holds

( ( for s1 being State of A1 st s1 = s | the carrier of S1 holds

s1 is stable ) & ( for s2 being State of A2 st s2 = s | the carrier of S2 holds

s2 is stable ) )

let s be State of A; :: thesis: ( s is stable implies ( ( for s1 being State of A1 st s1 = s | the carrier of S1 holds

s1 is stable ) & ( for s2 being State of A2 st s2 = s | the carrier of S2 holds

s2 is stable ) ) )

assume A4: s = Following s ; :: according to CIRCUIT2:def 6 :: thesis: ( ( for s1 being State of A1 st s1 = s | the carrier of S1 holds

s1 is stable ) & ( for s2 being State of A2 st s2 = s | the carrier of S2 holds

s2 is stable ) )

hereby :: thesis: for s2 being State of A2 st s2 = s | the carrier of S2 holds

s2 is stable

let s2 be State of A2; :: thesis: ( s2 = s | the carrier of S2 implies s2 is stable )s2 is stable

let s1 be State of A1; :: thesis: ( s1 = s | the carrier of S1 implies s1 is stable )

assume A5: s1 = s | the carrier of S1 ; :: thesis: s1 is stable

then s1 = Following s1 by A6, FUNCT_1:2;

hence s1 is stable ; :: thesis: verum

end;assume A5: s1 = s | the carrier of S1 ; :: thesis: s1 is stable

A6: now :: thesis: for x being object st x in the carrier of S1 holds

s1 . x = (Following s1) . x

( dom s1 = the carrier of S1 & dom (Following s1) = the carrier of S1 )
by CIRCUIT1:3;s1 . x = (Following s1) . x

let x be object ; :: thesis: ( x in the carrier of S1 implies s1 . x = (Following s1) . x )

assume x in the carrier of S1 ; :: thesis: s1 . x = (Following s1) . x

then reconsider v = x as Vertex of S1 ;

reconsider v9 = v as Vertex of S by A2, XBOOLE_0:def 3;

the carrier of S1 = (InputVertices S1) \/ (InnerVertices S1) by XBOOLE_1:45;

then ( v in InputVertices S1 or v9 in InnerVertices S1 ) by XBOOLE_0:def 3;

then ( s1 . v = (Following s1) . v or s . v9 = (Following s1) . v ) by A1, A3, A4, A5, CIRCCOMB:31, CIRCUIT2:def 5;

hence s1 . x = (Following s1) . x by A5, FUNCT_1:49; :: thesis: verum

end;assume x in the carrier of S1 ; :: thesis: s1 . x = (Following s1) . x

then reconsider v = x as Vertex of S1 ;

reconsider v9 = v as Vertex of S by A2, XBOOLE_0:def 3;

the carrier of S1 = (InputVertices S1) \/ (InnerVertices S1) by XBOOLE_1:45;

then ( v in InputVertices S1 or v9 in InnerVertices S1 ) by XBOOLE_0:def 3;

then ( s1 . v = (Following s1) . v or s . v9 = (Following s1) . v ) by A1, A3, A4, A5, CIRCCOMB:31, CIRCUIT2:def 5;

hence s1 . x = (Following s1) . x by A5, FUNCT_1:49; :: thesis: verum

then s1 = Following s1 by A6, FUNCT_1:2;

hence s1 is stable ; :: thesis: verum

assume A7: s2 = s | the carrier of S2 ; :: thesis: s2 is stable

A8: now :: thesis: for x being object st x in the carrier of S2 holds

s2 . x = (Following s2) . x

( dom s2 = the carrier of S2 & dom (Following s2) = the carrier of S2 )
by CIRCUIT1:3;s2 . x = (Following s2) . x

let x be object ; :: thesis: ( x in the carrier of S2 implies s2 . x = (Following s2) . x )

assume x in the carrier of S2 ; :: thesis: s2 . x = (Following s2) . x

then reconsider v = x as Vertex of S2 ;

reconsider v9 = v as Vertex of S by A2, XBOOLE_0:def 3;

the carrier of S2 = (InputVertices S2) \/ (InnerVertices S2) by XBOOLE_1:45;

then ( v in InputVertices S2 or v9 in InnerVertices S2 ) by XBOOLE_0:def 3;

then ( s2 . v = (Following s2) . v or s . v9 = (Following s2) . v ) by A1, A3, A4, A7, CIRCCOMB:31, CIRCUIT2:def 5;

hence s2 . x = (Following s2) . x by A7, FUNCT_1:49; :: thesis: verum

end;assume x in the carrier of S2 ; :: thesis: s2 . x = (Following s2) . x

then reconsider v = x as Vertex of S2 ;

reconsider v9 = v as Vertex of S by A2, XBOOLE_0:def 3;

the carrier of S2 = (InputVertices S2) \/ (InnerVertices S2) by XBOOLE_1:45;

then ( v in InputVertices S2 or v9 in InnerVertices S2 ) by XBOOLE_0:def 3;

then ( s2 . v = (Following s2) . v or s . v9 = (Following s2) . v ) by A1, A3, A4, A7, CIRCCOMB:31, CIRCUIT2:def 5;

hence s2 . x = (Following s2) . x by A7, FUNCT_1:49; :: thesis: verum

hence s2 = Following s2 by A8, FUNCT_1:2; :: according to CIRCUIT2:def 6 :: thesis: verum