let x, y, c be non pair object ; :: thesis: for s being State of (MajorityCirc (x,y,c)) holds Following (s,2) is stable

set S = MajorityStr (x,y,c);

reconsider xx = x, yy = y, cc = c as Vertex of (MajorityStr (x,y,c)) by Th72;

let s be State of (MajorityCirc (x,y,c)); :: thesis: Following (s,2) is stable

set a1 = s . xx;

set a2 = s . yy;

set a3 = s . cc;

set ffs = Following (s,2);

set fffs = Following (Following (s,2));

A1: Following (s,2) = Following (Following s) by Th15;

A2: y in InputVertices (MajorityStr (x,y,c)) by Th74;

then (Following s) . y = s . yy by CIRCUIT2:def 5;

then A3: (Following (s,2)) . y = s . yy by A1, A2, CIRCUIT2:def 5;

s . yy = s . y ;

then A4: (Following (s,2)) . [<*c,x*>,'&'] = (s . cc) '&' (s . xx) by Lm3;

A5: x in InputVertices (MajorityStr (x,y,c)) by Th74;

then (Following s) . x = s . xx by CIRCUIT2:def 5;

then A6: (Following (s,2)) . x = s . xx by A1, A5, CIRCUIT2:def 5;

s . xx = s . x ;

then A7: (Following (s,2)) . [<*y,c*>,'&'] = (s . yy) '&' (s . cc) by Lm3;

A8: c in InputVertices (MajorityStr (x,y,c)) by Th74;

then (Following s) . c = s . cc by CIRCUIT2:def 5;

then A9: (Following (s,2)) . c = s . cc by A1, A8, CIRCUIT2:def 5;

s . cc = s . c ;

then A10: (Following (s,2)) . [<*x,y*>,'&'] = (s . xx) '&' (s . yy) by Lm3;

A11: (Following (s,2)) . (MajorityOutput (x,y,c)) = (((s . xx) '&' (s . yy)) 'or' ((s . yy) '&' (s . cc))) 'or' ((s . cc) '&' (s . xx)) by Lm3;

hence Following (s,2) = Following (Following (s,2)) by A12, FUNCT_1:2; :: according to CIRCUIT2:def 6 :: thesis: verum

set S = MajorityStr (x,y,c);

reconsider xx = x, yy = y, cc = c as Vertex of (MajorityStr (x,y,c)) by Th72;

let s be State of (MajorityCirc (x,y,c)); :: thesis: Following (s,2) is stable

set a1 = s . xx;

set a2 = s . yy;

set a3 = s . cc;

set ffs = Following (s,2);

set fffs = Following (Following (s,2));

A1: Following (s,2) = Following (Following s) by Th15;

A2: y in InputVertices (MajorityStr (x,y,c)) by Th74;

then (Following s) . y = s . yy by CIRCUIT2:def 5;

then A3: (Following (s,2)) . y = s . yy by A1, A2, CIRCUIT2:def 5;

s . yy = s . y ;

then A4: (Following (s,2)) . [<*c,x*>,'&'] = (s . cc) '&' (s . xx) by Lm3;

A5: x in InputVertices (MajorityStr (x,y,c)) by Th74;

then (Following s) . x = s . xx by CIRCUIT2:def 5;

then A6: (Following (s,2)) . x = s . xx by A1, A5, CIRCUIT2:def 5;

s . xx = s . x ;

then A7: (Following (s,2)) . [<*y,c*>,'&'] = (s . yy) '&' (s . cc) by Lm3;

A8: c in InputVertices (MajorityStr (x,y,c)) by Th74;

then (Following s) . c = s . cc by CIRCUIT2:def 5;

then A9: (Following (s,2)) . c = s . cc by A1, A8, CIRCUIT2:def 5;

s . cc = s . c ;

then A10: (Following (s,2)) . [<*x,y*>,'&'] = (s . xx) '&' (s . yy) by Lm3;

A11: (Following (s,2)) . (MajorityOutput (x,y,c)) = (((s . xx) '&' (s . yy)) 'or' ((s . yy) '&' (s . cc))) 'or' ((s . cc) '&' (s . xx)) by Lm3;

A12: now :: thesis: for a being object st a in the carrier of (MajorityStr (x,y,c)) holds

(Following (s,2)) . a = (Following (Following (s,2))) . a

( dom (Following (Following (s,2))) = the carrier of (MajorityStr (x,y,c)) & dom (Following (s,2)) = the carrier of (MajorityStr (x,y,c)) )
by CIRCUIT1:3;(Following (s,2)) . a = (Following (Following (s,2))) . a

let a be object ; :: thesis: ( a in the carrier of (MajorityStr (x,y,c)) implies (Following (s,2)) . a = (Following (Following (s,2))) . a )

assume A13: a in the carrier of (MajorityStr (x,y,c)) ; :: thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a

then reconsider v = a as Vertex of (MajorityStr (x,y,c)) ;

A14: v in (InputVertices (MajorityStr (x,y,c))) \/ (InnerVertices (MajorityStr (x,y,c))) by A13, XBOOLE_1:45;

thus (Following (s,2)) . a = (Following (Following (s,2))) . a :: thesis: verum

end;assume A13: a in the carrier of (MajorityStr (x,y,c)) ; :: thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a

then reconsider v = a as Vertex of (MajorityStr (x,y,c)) ;

A14: v in (InputVertices (MajorityStr (x,y,c))) \/ (InnerVertices (MajorityStr (x,y,c))) by A13, XBOOLE_1:45;

thus (Following (s,2)) . a = (Following (Following (s,2))) . a :: thesis: verum

proof
end;

per cases
( v in InputVertices (MajorityStr (x,y,c)) or v in InnerVertices (MajorityStr (x,y,c)) )
by A14, XBOOLE_0:def 3;

end;

suppose
v in InputVertices (MajorityStr (x,y,c))
; :: thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a

end;

end;

suppose
v in InnerVertices (MajorityStr (x,y,c))
; :: thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a

then
v in {[<*x,y*>,'&'],[<*y,c*>,'&'],[<*c,x*>,'&']} \/ {(MajorityOutput (x,y,c))}
by Th75;

then ( v in {[<*x,y*>,'&'],[<*y,c*>,'&'],[<*c,x*>,'&']} or v in {(MajorityOutput (x,y,c))} ) by XBOOLE_0:def 3;

then ( v = [<*x,y*>,'&'] or v = [<*y,c*>,'&'] or v = [<*c,x*>,'&'] or v = MajorityOutput (x,y,c) ) by ENUMSET1:def 1, TARSKI:def 1;

hence (Following (s,2)) . a = (Following (Following (s,2))) . a by A11, A10, A7, A4, A6, A3, A9, Lm2, Th79; :: thesis: verum

end;then ( v in {[<*x,y*>,'&'],[<*y,c*>,'&'],[<*c,x*>,'&']} or v in {(MajorityOutput (x,y,c))} ) by XBOOLE_0:def 3;

then ( v = [<*x,y*>,'&'] or v = [<*y,c*>,'&'] or v = [<*c,x*>,'&'] or v = MajorityOutput (x,y,c) ) by ENUMSET1:def 1, TARSKI:def 1;

hence (Following (s,2)) . a = (Following (Following (s,2))) . a by A11, A10, A7, A4, A6, A3, A9, Lm2, Th79; :: thesis: verum

hence Following (s,2) = Following (Following (s,2)) by A12, FUNCT_1:2; :: according to CIRCUIT2:def 6 :: thesis: verum