:: GFACIRC1 semantic presentation begin scheme :: GFACIRC1:sch 1 1AryBooleEx{ F1( set ) -> Element of BOOLEAN } : ex f being Function of (1 -tuples_on BOOLEAN),BOOLEAN st for x being Element of BOOLEAN holds f . <*x*> = F1(x) proof deffunc H1( Tuple of 1,BOOLEAN) -> Element of BOOLEAN = F1(($1 . 1)); consider f being Function of (1 -tuples_on BOOLEAN),BOOLEAN such that A1: for a being Element of 1 -tuples_on BOOLEAN holds f . a = H1(a) from FUNCT_2:sch_4(); hereby ::_thesis: verum take f = f; ::_thesis: for x being Element of BOOLEAN holds f . <*x*> = F1(x) let x be Element of BOOLEAN ; ::_thesis: f . <*x*> = F1(x) reconsider a = <*x*> as Element of 1 -tuples_on BOOLEAN by FINSEQ_2:98; thus f . <*x*> = F1((a . 1)) by A1 .= F1(x) by FINSEQ_1:def_8 ; ::_thesis: verum end; end; scheme :: GFACIRC1:sch 2 1AryBooleUniq{ F1( set ) -> Element of BOOLEAN } : for f1, f2 being Function of (1 -tuples_on BOOLEAN),BOOLEAN st ( for x being Element of BOOLEAN holds f1 . <*x*> = F1(x) ) & ( for x being Element of BOOLEAN holds f2 . <*x*> = F1(x) ) holds f1 = f2 proof let f1, f2 be Function of (1 -tuples_on BOOLEAN),BOOLEAN; ::_thesis: ( ( for x being Element of BOOLEAN holds f1 . <*x*> = F1(x) ) & ( for x being Element of BOOLEAN holds f2 . <*x*> = F1(x) ) implies f1 = f2 ) assume that A1: for x being Element of BOOLEAN holds f1 . <*x*> = F1(x) and A2: for x being Element of BOOLEAN holds f2 . <*x*> = F1(x) ; ::_thesis: f1 = f2 now__::_thesis:_for_a_being_Tuple_of_1,BOOLEAN_holds_f1_._a_=_f2_._a let a be Tuple of 1,BOOLEAN; ::_thesis: f1 . a = f2 . a consider x being Element of BOOLEAN such that A3: a = <*x*> by FINSEQ_2:97; thus f1 . a = F1(x) by A1, A3 .= f2 . a by A2, A3 ; ::_thesis: verum end; hence f1 = f2 by FUNCT_2:63; ::_thesis: verum end; scheme :: GFACIRC1:sch 3 1AryBooleDef{ F1( set ) -> Element of BOOLEAN } : ( ex f being Function of (1 -tuples_on BOOLEAN),BOOLEAN st for x being Element of BOOLEAN holds f . <*x*> = F1(x) & ( for f1, f2 being Function of (1 -tuples_on BOOLEAN),BOOLEAN st ( for x being Element of BOOLEAN holds f1 . <*x*> = F1(x) ) & ( for x being Element of BOOLEAN holds f2 . <*x*> = F1(x) ) holds f1 = f2 ) ) proof deffunc H1( Tuple of 1,BOOLEAN) -> Element of BOOLEAN = F1(($1 . 1)); consider f being Function of (1 -tuples_on BOOLEAN),BOOLEAN such that A1: for a being Tuple of 1,BOOLEAN holds f . a = H1(a) from FUNCT_2:sch_4(); hereby ::_thesis: for f1, f2 being Function of (1 -tuples_on BOOLEAN),BOOLEAN st ( for x being Element of BOOLEAN holds f1 . <*x*> = F1(x) ) & ( for x being Element of BOOLEAN holds f2 . <*x*> = F1(x) ) holds f1 = f2 take f = f; ::_thesis: for x being Element of BOOLEAN holds f . <*x*> = F1(x) let x be Element of BOOLEAN ; ::_thesis: f . <*x*> = F1(x) reconsider a = <*x*> as Element of 1 -tuples_on BOOLEAN by FINSEQ_2:98; thus f . <*x*> = F1((a . 1)) by A1 .= F1(x) by FINSEQ_1:def_8 ; ::_thesis: verum end; let f1, f2 be Function of (1 -tuples_on BOOLEAN),BOOLEAN; ::_thesis: ( ( for x being Element of BOOLEAN holds f1 . <*x*> = F1(x) ) & ( for x being Element of BOOLEAN holds f2 . <*x*> = F1(x) ) implies f1 = f2 ) assume that A2: for x being Element of BOOLEAN holds f1 . <*x*> = F1(x) and A3: for x being Element of BOOLEAN holds f2 . <*x*> = F1(x) ; ::_thesis: f1 = f2 now__::_thesis:_for_a_being_Tuple_of_1,BOOLEAN_holds_f1_._a_=_f2_._a let a be Tuple of 1,BOOLEAN; ::_thesis: f1 . a = f2 . a consider x being Element of BOOLEAN such that A4: a = <*x*> by FINSEQ_2:97; thus f1 . a = F1(x) by A2, A4 .= f2 . a by A3, A4 ; ::_thesis: verum end; hence f1 = f2 by FUNCT_2:63; ::_thesis: verum end; definition func inv1 -> Function of (1 -tuples_on BOOLEAN),BOOLEAN means :Def1: :: GFACIRC1:def 1 for x being Element of BOOLEAN holds it . <*x*> = 'not' x; existence ex b1 being Function of (1 -tuples_on BOOLEAN),BOOLEAN st for x being Element of BOOLEAN holds b1 . <*x*> = 'not' x proof deffunc H1( Element of BOOLEAN ) -> Element of BOOLEAN = 'not' $1; thus ex t being Function of (1 -tuples_on BOOLEAN),BOOLEAN st for x being Element of BOOLEAN holds t . <*x*> = H1(x) from GFACIRC1:sch_1(); ::_thesis: verum end; uniqueness for b1, b2 being Function of (1 -tuples_on BOOLEAN),BOOLEAN st ( for x being Element of BOOLEAN holds b1 . <*x*> = 'not' x ) & ( for x being Element of BOOLEAN holds b2 . <*x*> = 'not' x ) holds b1 = b2 proof deffunc H1( Element of BOOLEAN ) -> Element of BOOLEAN = 'not' $1; thus for t1, t2 being Function of (1 -tuples_on BOOLEAN),BOOLEAN st ( for x being Element of BOOLEAN holds t1 . <*x*> = H1(x) ) & ( for x being Element of BOOLEAN holds t2 . <*x*> = H1(x) ) holds t1 = t2 from GFACIRC1:sch_2(); ::_thesis: verum end; end; :: deftheorem Def1 defines inv1 GFACIRC1:def_1_:_ for b1 being Function of (1 -tuples_on BOOLEAN),BOOLEAN holds ( b1 = inv1 iff for x being Element of BOOLEAN holds b1 . <*x*> = 'not' x ); theorem Th1: :: GFACIRC1:1 for x being Element of BOOLEAN holds ( inv1 . <*x*> = 'not' x & inv1 . <*x*> = nand2 . <*x,x*> & inv1 . <*0*> = 1 & inv1 . <*1*> = 0 ) proof let x be Element of BOOLEAN ; ::_thesis: ( inv1 . <*x*> = 'not' x & inv1 . <*x*> = nand2 . <*x,x*> & inv1 . <*0*> = 1 & inv1 . <*1*> = 0 ) thus inv1 . <*x*> = 'not' x by Def1; ::_thesis: ( inv1 . <*x*> = nand2 . <*x,x*> & inv1 . <*0*> = 1 & inv1 . <*1*> = 0 ) thus inv1 . <*x*> = 'not' (x '&' x) by Def1 .= nand2 . <*x,x*> by TWOSCOMP:def_4 ; ::_thesis: ( inv1 . <*0*> = 1 & inv1 . <*1*> = 0 ) thus inv1 . <*0*> = 'not' FALSE by Def1 .= 1 ; ::_thesis: inv1 . <*1*> = 0 thus inv1 . <*1*> = 'not' TRUE by Def1 .= 0 ; ::_thesis: verum end; definition func buf1 -> Function of (1 -tuples_on BOOLEAN),BOOLEAN means :Def2: :: GFACIRC1:def 2 for x being Element of BOOLEAN holds it . <*x*> = x; existence ex b1 being Function of (1 -tuples_on BOOLEAN),BOOLEAN st for x being Element of BOOLEAN holds b1 . <*x*> = x proof deffunc H1( Element of BOOLEAN ) -> Element of BOOLEAN = $1; thus ex t being Function of (1 -tuples_on BOOLEAN),BOOLEAN st for x being Element of BOOLEAN holds t . <*x*> = H1(x) from GFACIRC1:sch_1(); ::_thesis: verum end; uniqueness for b1, b2 being Function of (1 -tuples_on BOOLEAN),BOOLEAN st ( for x being Element of BOOLEAN holds b1 . <*x*> = x ) & ( for x being Element of BOOLEAN holds b2 . <*x*> = x ) holds b1 = b2 proof deffunc H1( Element of BOOLEAN ) -> Element of BOOLEAN = $1; thus for t1, t2 being Function of (1 -tuples_on BOOLEAN),BOOLEAN st ( for x being Element of BOOLEAN holds t1 . <*x*> = H1(x) ) & ( for x being Element of BOOLEAN holds t2 . <*x*> = H1(x) ) holds t1 = t2 from GFACIRC1:sch_2(); ::_thesis: verum end; end; :: deftheorem Def2 defines buf1 GFACIRC1:def_2_:_ for b1 being Function of (1 -tuples_on BOOLEAN),BOOLEAN holds ( b1 = buf1 iff for x being Element of BOOLEAN holds b1 . <*x*> = x ); theorem :: GFACIRC1:2 for x being Element of BOOLEAN holds ( buf1 . <*x*> = x & buf1 . <*x*> = and2 . <*x,x*> & buf1 . <*0*> = 0 & buf1 . <*1*> = 1 ) proof let x be Element of BOOLEAN ; ::_thesis: ( buf1 . <*x*> = x & buf1 . <*x*> = and2 . <*x,x*> & buf1 . <*0*> = 0 & buf1 . <*1*> = 1 ) thus buf1 . <*x*> = x by Def2; ::_thesis: ( buf1 . <*x*> = and2 . <*x,x*> & buf1 . <*0*> = 0 & buf1 . <*1*> = 1 ) thus buf1 . <*x*> = x '&' x by Def2 .= and2 . <*x,x*> by TWOSCOMP:def_1 ; ::_thesis: ( buf1 . <*0*> = 0 & buf1 . <*1*> = 1 ) thus buf1 . <*0*> = FALSE by Def2 .= 0 ; ::_thesis: buf1 . <*1*> = 1 thus buf1 . <*1*> = TRUE by Def2 .= 1 ; ::_thesis: verum end; definition func and2c -> Function of (2 -tuples_on BOOLEAN),BOOLEAN means :Def3: :: GFACIRC1:def 3 for x, y being Element of BOOLEAN holds it . <*x,y*> = x '&' ('not' y); existence ex b1 being Function of (2 -tuples_on BOOLEAN),BOOLEAN st for x, y being Element of BOOLEAN holds b1 . <*x,y*> = x '&' ('not' y) proof deffunc H1( Element of BOOLEAN , Element of BOOLEAN ) -> Element of BOOLEAN = $1 '&' ('not' $2); thus ex t being Function of (2 -tuples_on BOOLEAN),BOOLEAN st for x, y being Element of BOOLEAN holds t . <*x,y*> = H1(x,y) from FACIRC_1:sch_1(); ::_thesis: verum end; uniqueness for b1, b2 being Function of (2 -tuples_on BOOLEAN),BOOLEAN st ( for x, y being Element of BOOLEAN holds b1 . <*x,y*> = x '&' ('not' y) ) & ( for x, y being Element of BOOLEAN holds b2 . <*x,y*> = x '&' ('not' y) ) holds b1 = b2 proof deffunc H1( Element of BOOLEAN , Element of BOOLEAN ) -> Element of BOOLEAN = $1 '&' ('not' $2); thus for t1, t2 being Function of (2 -tuples_on BOOLEAN),BOOLEAN st ( for x, y being Element of BOOLEAN holds t1 . <*x,y*> = H1(x,y) ) & ( for x, y being Element of BOOLEAN holds t2 . <*x,y*> = H1(x,y) ) holds t1 = t2 from FACIRC_1:sch_2(); ::_thesis: verum end; end; :: deftheorem Def3 defines and2c GFACIRC1:def_3_:_ for b1 being Function of (2 -tuples_on BOOLEAN),BOOLEAN holds ( b1 = and2c iff for x, y being Element of BOOLEAN holds b1 . <*x,y*> = x '&' ('not' y) ); theorem :: GFACIRC1:3 for x, y being Element of BOOLEAN holds ( and2c . <*x,y*> = x '&' ('not' y) & and2c . <*x,y*> = and2a . <*y,x*> & and2c . <*x,y*> = nor2a . <*x,y*> & and2c . <*0,0*> = 0 & and2c . <*0,1*> = 0 & and2c . <*1,0*> = 1 & and2c . <*1,1*> = 0 ) proof let x, y be Element of BOOLEAN ; ::_thesis: ( and2c . <*x,y*> = x '&' ('not' y) & and2c . <*x,y*> = and2a . <*y,x*> & and2c . <*x,y*> = nor2a . <*x,y*> & and2c . <*0,0*> = 0 & and2c . <*0,1*> = 0 & and2c . <*1,0*> = 1 & and2c . <*1,1*> = 0 ) thus and2c . <*x,y*> = x '&' ('not' y) by Def3; ::_thesis: ( and2c . <*x,y*> = and2a . <*y,x*> & and2c . <*x,y*> = nor2a . <*x,y*> & and2c . <*0,0*> = 0 & and2c . <*0,1*> = 0 & and2c . <*1,0*> = 1 & and2c . <*1,1*> = 0 ) thus and2c . <*x,y*> = x '&' ('not' y) by Def3 .= and2a . <*y,x*> by TWOSCOMP:def_2 ; ::_thesis: ( and2c . <*x,y*> = nor2a . <*x,y*> & and2c . <*0,0*> = 0 & and2c . <*0,1*> = 0 & and2c . <*1,0*> = 1 & and2c . <*1,1*> = 0 ) thus and2c . <*x,y*> = 'not' (('not' x) 'or' ('not' ('not' y))) by Def3 .= nor2a . <*x,y*> by TWOSCOMP:def_11 ; ::_thesis: ( and2c . <*0,0*> = 0 & and2c . <*0,1*> = 0 & and2c . <*1,0*> = 1 & and2c . <*1,1*> = 0 ) thus and2c . <*0,0*> = FALSE '&' ('not' FALSE) by Def3 .= 0 ; ::_thesis: ( and2c . <*0,1*> = 0 & and2c . <*1,0*> = 1 & and2c . <*1,1*> = 0 ) thus and2c . <*0,1*> = FALSE '&' ('not' TRUE) by Def3 .= 0 ; ::_thesis: ( and2c . <*1,0*> = 1 & and2c . <*1,1*> = 0 ) thus and2c . <*1,0*> = TRUE '&' ('not' FALSE) by Def3 .= 1 ; ::_thesis: and2c . <*1,1*> = 0 thus and2c . <*1,1*> = TRUE '&' ('not' TRUE) by Def3 .= 0 ; ::_thesis: verum end; definition func xor2c -> Function of (2 -tuples_on BOOLEAN),BOOLEAN means :Def4: :: GFACIRC1:def 4 for x, y being Element of BOOLEAN holds it . <*x,y*> = x 'xor' ('not' y); existence ex b1 being Function of (2 -tuples_on BOOLEAN),BOOLEAN st for x, y being Element of BOOLEAN holds b1 . <*x,y*> = x 'xor' ('not' y) proof deffunc H1( Element of BOOLEAN , Element of BOOLEAN ) -> Element of BOOLEAN = $1 'xor' ('not' $2); thus ex t being Function of (2 -tuples_on BOOLEAN),BOOLEAN st for x, y being Element of BOOLEAN holds t . <*x,y*> = H1(x,y) from FACIRC_1:sch_1(); ::_thesis: verum end; uniqueness for b1, b2 being Function of (2 -tuples_on BOOLEAN),BOOLEAN st ( for x, y being Element of BOOLEAN holds b1 . <*x,y*> = x 'xor' ('not' y) ) & ( for x, y being Element of BOOLEAN holds b2 . <*x,y*> = x 'xor' ('not' y) ) holds b1 = b2 proof deffunc H1( Element of BOOLEAN , Element of BOOLEAN ) -> Element of BOOLEAN = $1 'xor' ('not' $2); thus for t1, t2 being Function of (2 -tuples_on BOOLEAN),BOOLEAN st ( for x, y being Element of BOOLEAN holds t1 . <*x,y*> = H1(x,y) ) & ( for x, y being Element of BOOLEAN holds t2 . <*x,y*> = H1(x,y) ) holds t1 = t2 from FACIRC_1:sch_2(); ::_thesis: verum end; end; :: deftheorem Def4 defines xor2c GFACIRC1:def_4_:_ for b1 being Function of (2 -tuples_on BOOLEAN),BOOLEAN holds ( b1 = xor2c iff for x, y being Element of BOOLEAN holds b1 . <*x,y*> = x 'xor' ('not' y) ); theorem Th4: :: GFACIRC1:4 for x, y being Element of BOOLEAN holds ( xor2c . <*x,y*> = x 'xor' ('not' y) & xor2c . <*x,y*> = xor2a . <*x,y*> & xor2c . <*x,y*> = or2 . <*(and2b . <*x,y*>),(and2 . <*x,y*>)*> & xor2c . <*0,0*> = 1 & xor2c . <*0,1*> = 0 & xor2c . <*1,0*> = 0 & xor2c . <*1,1*> = 1 ) proof let x, y be Element of BOOLEAN ; ::_thesis: ( xor2c . <*x,y*> = x 'xor' ('not' y) & xor2c . <*x,y*> = xor2a . <*x,y*> & xor2c . <*x,y*> = or2 . <*(and2b . <*x,y*>),(and2 . <*x,y*>)*> & xor2c . <*0,0*> = 1 & xor2c . <*0,1*> = 0 & xor2c . <*1,0*> = 0 & xor2c . <*1,1*> = 1 ) thus xor2c . <*x,y*> = x 'xor' ('not' y) by Def4; ::_thesis: ( xor2c . <*x,y*> = xor2a . <*x,y*> & xor2c . <*x,y*> = or2 . <*(and2b . <*x,y*>),(and2 . <*x,y*>)*> & xor2c . <*0,0*> = 1 & xor2c . <*0,1*> = 0 & xor2c . <*1,0*> = 0 & xor2c . <*1,1*> = 1 ) thus xor2c . <*x,y*> = x 'xor' ('not' y) by Def4 .= ('not' x) 'xor' y .= xor2a . <*x,y*> by TWOSCOMP:def_14 ; ::_thesis: ( xor2c . <*x,y*> = or2 . <*(and2b . <*x,y*>),(and2 . <*x,y*>)*> & xor2c . <*0,0*> = 1 & xor2c . <*0,1*> = 0 & xor2c . <*1,0*> = 0 & xor2c . <*1,1*> = 1 ) thus xor2c . <*x,y*> = x 'xor' ('not' y) by Def4 .= (('not' x) '&' ('not' y)) 'or' (x '&' ('not' ('not' y))) .= or2 . <*(('not' x) '&' ('not' y)),(x '&' y)*> by TWOSCOMP:def_7 .= or2 . <*(and2b . <*x,y*>),(x '&' y)*> by TWOSCOMP:def_3 .= or2 . <*(and2b . <*x,y*>),(and2 . <*x,y*>)*> by TWOSCOMP:def_1 ; ::_thesis: ( xor2c . <*0,0*> = 1 & xor2c . <*0,1*> = 0 & xor2c . <*1,0*> = 0 & xor2c . <*1,1*> = 1 ) thus xor2c . <*0,0*> = FALSE 'xor' ('not' FALSE) by Def4 .= 1 by XBOOLEAN:102 ; ::_thesis: ( xor2c . <*0,1*> = 0 & xor2c . <*1,0*> = 0 & xor2c . <*1,1*> = 1 ) thus xor2c . <*0,1*> = FALSE 'xor' ('not' TRUE) by Def4 .= 0 ; ::_thesis: ( xor2c . <*1,0*> = 0 & xor2c . <*1,1*> = 1 ) thus xor2c . <*1,0*> = TRUE 'xor' ('not' FALSE) by Def4 .= 0 ; ::_thesis: xor2c . <*1,1*> = 1 thus xor2c . <*1,1*> = TRUE 'xor' ('not' TRUE) by Def4 .= 1 by BINARITH:7 ; ::_thesis: verum end; theorem :: GFACIRC1:5 for x, y being Element of BOOLEAN holds ( inv1 . <*(xor2 . <*x,y*>)*> = xor2a . <*x,y*> & inv1 . <*(xor2 . <*x,y*>)*> = xor2c . <*x,y*> & xor2 . <*(inv1 . <*x*>),(inv1 . <*y*>)*> = xor2 . <*x,y*> ) proof let x, y be Element of BOOLEAN ; ::_thesis: ( inv1 . <*(xor2 . <*x,y*>)*> = xor2a . <*x,y*> & inv1 . <*(xor2 . <*x,y*>)*> = xor2c . <*x,y*> & xor2 . <*(inv1 . <*x*>),(inv1 . <*y*>)*> = xor2 . <*x,y*> ) thus inv1 . <*(xor2 . <*x,y*>)*> = inv1 . <*(x 'xor' y)*> by TWOSCOMP:def_13 .= 'not' (x 'xor' y) by Def1 .= ('not' x) 'xor' y by XBOOLEAN:74 .= xor2a . <*x,y*> by TWOSCOMP:def_14 ; ::_thesis: ( inv1 . <*(xor2 . <*x,y*>)*> = xor2c . <*x,y*> & xor2 . <*(inv1 . <*x*>),(inv1 . <*y*>)*> = xor2 . <*x,y*> ) hence inv1 . <*(xor2 . <*x,y*>)*> = xor2c . <*x,y*> by Th4; ::_thesis: xor2 . <*(inv1 . <*x*>),(inv1 . <*y*>)*> = xor2 . <*x,y*> thus xor2 . <*(inv1 . <*x*>),(inv1 . <*y*>)*> = xor2 . <*('not' x),(inv1 . <*y*>)*> by Th1 .= xor2 . <*('not' x),('not' y)*> by Th1 .= ('not' x) 'xor' ('not' y) by TWOSCOMP:def_13 .= x 'xor' y .= xor2 . <*x,y*> by TWOSCOMP:def_13 ; ::_thesis: verum end; theorem :: GFACIRC1:6 for x, y, z being Element of BOOLEAN holds inv1 . <*(xor2 . <*(xor2c . <*x,y*>),z*>)*> = xor2c . <*(xor2c . <*x,y*>),z*> proof let x, y, z be Element of BOOLEAN ; ::_thesis: inv1 . <*(xor2 . <*(xor2c . <*x,y*>),z*>)*> = xor2c . <*(xor2c . <*x,y*>),z*> thus inv1 . <*(xor2 . <*(xor2c . <*x,y*>),z*>)*> = inv1 . <*(xor2 . <*(x 'xor' ('not' y)),z*>)*> by Def4 .= inv1 . <*((x 'xor' ('not' y)) 'xor' z)*> by TWOSCOMP:def_13 .= 'not' ((x 'xor' ('not' y)) 'xor' z) by Def1 .= (x 'xor' ('not' y)) 'xor' ('not' z) by XBOOLEAN:74 .= xor2c . <*(x 'xor' ('not' y)),z*> by Def4 .= xor2c . <*(xor2c . <*x,y*>),z*> by Def4 ; ::_thesis: verum end; theorem :: GFACIRC1:7 for x, y, z being Element of BOOLEAN holds (('not' x) 'xor' y) 'xor' ('not' z) = (x 'xor' ('not' y)) 'xor' ('not' z) ; theorem :: GFACIRC1:8 for x, y, z being Element of BOOLEAN holds xor2c . <*(xor2a . <*x,y*>),z*> = xor2c . <*(xor2c . <*x,y*>),z*> by Th4; theorem :: GFACIRC1:9 for x, y, z being Element of BOOLEAN holds inv1 . <*(xor2c . <*(xor2b . <*x,y*>),z*>)*> = xor2 . <*(xor2 . <*x,y*>),z*> proof let x, y, z be Element of BOOLEAN ; ::_thesis: inv1 . <*(xor2c . <*(xor2b . <*x,y*>),z*>)*> = xor2 . <*(xor2 . <*x,y*>),z*> thus inv1 . <*(xor2c . <*(xor2b . <*x,y*>),z*>)*> = inv1 . <*(xor2c . <*(('not' x) 'xor' ('not' y)),z*>)*> by TWOSCOMP:def_15 .= inv1 . <*((('not' x) 'xor' ('not' y)) 'xor' ('not' z))*> by Def4 .= 'not' ((('not' x) 'xor' ('not' y)) 'xor' ('not' z)) by Def1 .= (x 'xor' y) 'xor' z by XBOOLEAN:74 .= xor2 . <*(x 'xor' y),z*> by TWOSCOMP:def_13 .= xor2 . <*(xor2 . <*x,y*>),z*> by TWOSCOMP:def_13 ; ::_thesis: verum end; Lm1: for f1, f2, f3 being Function of (2 -tuples_on BOOLEAN),BOOLEAN for x, y, z being set st x <> [<*y,z*>,f2] & y <> [<*z,x*>,f3] & z <> [<*x,y*>,f1] holds ( not [<*x,y*>,f1] in {y,z} & not z in {[<*x,y*>,f1],[<*y,z*>,f2]} & not x in {[<*x,y*>,f1],[<*y,z*>,f2]} & not [<*z,x*>,f3] in {x,y,z} ) proof let f1, f2, f3 be Function of (2 -tuples_on BOOLEAN),BOOLEAN; ::_thesis: for x, y, z being set st x <> [<*y,z*>,f2] & y <> [<*z,x*>,f3] & z <> [<*x,y*>,f1] holds ( not [<*x,y*>,f1] in {y,z} & not z in {[<*x,y*>,f1],[<*y,z*>,f2]} & not x in {[<*x,y*>,f1],[<*y,z*>,f2]} & not [<*z,x*>,f3] in {x,y,z} ) let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,f2] & y <> [<*z,x*>,f3] & z <> [<*x,y*>,f1] implies ( not [<*x,y*>,f1] in {y,z} & not z in {[<*x,y*>,f1],[<*y,z*>,f2]} & not x in {[<*x,y*>,f1],[<*y,z*>,f2]} & not [<*z,x*>,f3] in {x,y,z} ) ) set xy = [<*x,y*>,f1]; set yz = [<*y,z*>,f2]; set zx = [<*z,x*>,f3]; assume that A1: x <> [<*y,z*>,f2] and A2: y <> [<*z,x*>,f3] and A3: z <> [<*x,y*>,f1] ; ::_thesis: ( not [<*x,y*>,f1] in {y,z} & not z in {[<*x,y*>,f1],[<*y,z*>,f2]} & not x in {[<*x,y*>,f1],[<*y,z*>,f2]} & not [<*z,x*>,f3] in {x,y,z} ) A4: ( <*x,y*> in {<*x,y*>} & {<*x,y*>} in [<*x,y*>,f1] ) by TARSKI:def_1, TARSKI:def_2; dom <*x,y*> = Seg 2 by FINSEQ_1:89; then A5: 2 in dom <*x,y*> by FINSEQ_1:1; <*x,y*> . 2 = y by FINSEQ_1:44; then A6: [2,y] in <*x,y*> by A5, FUNCT_1:1; ( y in {2,y} & {2,y} in [2,y] ) by TARSKI:def_2; then y <> [<*x,y*>,f1] by A6, A4, XREGULAR:9; hence not [<*x,y*>,f1] in {y,z} by A3, TARSKI:def_2; ::_thesis: ( not z in {[<*x,y*>,f1],[<*y,z*>,f2]} & not x in {[<*x,y*>,f1],[<*y,z*>,f2]} & not [<*z,x*>,f3] in {x,y,z} ) A7: ( z in {2,z} & {2,z} in [2,z] ) by TARSKI:def_2; A8: ( <*x,y*> in {<*x,y*>} & {<*x,y*>} in [<*x,y*>,f1] ) by TARSKI:def_1, TARSKI:def_2; <*z*> = {[1,z]} by FINSEQ_1:def_5; then A9: [1,z] in <*z*> by TARSKI:def_1; <*x*> = {[1,x]} by FINSEQ_1:def_5; then A10: [1,x] in <*x*> by TARSKI:def_1; dom <*z,x*> = Seg 2 by FINSEQ_1:89; then A11: 2 in dom <*z,x*> by FINSEQ_1:1; <*z,x*> . 2 = x by FINSEQ_1:44; then A12: [2,x] in <*z,x*> by A11, FUNCT_1:1; <*z,x*> = <*z*> ^ <*x*> by FINSEQ_1:def_9; then A13: <*z*> c= <*z,x*> by FINSEQ_6:10; dom <*y,z*> = Seg 2 by FINSEQ_1:89; then A14: 2 in dom <*y,z*> by FINSEQ_1:1; <*y,z*> . 2 = z by FINSEQ_1:44; then A15: [2,z] in <*y,z*> by A14, FUNCT_1:1; <*x,y*> = <*x*> ^ <*y*> by FINSEQ_1:def_9; then A16: <*x*> c= <*x,y*> by FINSEQ_6:10; ( <*y,z*> in {<*y,z*>} & {<*y,z*>} in [<*y,z*>,f2] ) by TARSKI:def_1, TARSKI:def_2; then A17: z <> [<*y,z*>,f2] by A7, A15, XREGULAR:9; ( x in {1,x} & {1,x} in [1,x] ) by TARSKI:def_2; then x <> [<*x,y*>,f1] by A16, A10, A8, XREGULAR:9; hence ( not z in {[<*x,y*>,f1],[<*y,z*>,f2]} & not x in {[<*x,y*>,f1],[<*y,z*>,f2]} ) by A1, A3, A17, TARSKI:def_2; ::_thesis: not [<*z,x*>,f3] in {x,y,z} A18: ( <*z,x*> in {<*z,x*>} & {<*z,x*>} in [<*z,x*>,f3] ) by TARSKI:def_1, TARSKI:def_2; A19: ( <*z,x*> in {<*z,x*>} & {<*z,x*>} in [<*z,x*>,f3] ) by TARSKI:def_1, TARSKI:def_2; ( x in {2,x} & {2,x} in [2,x] ) by TARSKI:def_2; then A20: x <> [<*z,x*>,f3] by A12, A18, XREGULAR:9; ( z in {1,z} & {1,z} in [1,z] ) by TARSKI:def_2; then z <> [<*z,x*>,f3] by A13, A9, A19, XREGULAR:9; hence not [<*z,x*>,f3] in {x,y,z} by A2, A20, ENUMSET1:def_1; ::_thesis: verum end; Lm2: for f1, f2, f3 being Function of (2 -tuples_on BOOLEAN),BOOLEAN for f4 being Function of (3 -tuples_on BOOLEAN),BOOLEAN for x, y, z being set holds {x,y,z} \ {[<*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*>,f4]} = {x,y,z} proof let f1, f2, f3 be Function of (2 -tuples_on BOOLEAN),BOOLEAN; ::_thesis: for f4 being Function of (3 -tuples_on BOOLEAN),BOOLEAN for x, y, z being set holds {x,y,z} \ {[<*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*>,f4]} = {x,y,z} let f4 be Function of (3 -tuples_on BOOLEAN),BOOLEAN; ::_thesis: for x, y, z being set holds {x,y,z} \ {[<*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*>,f4]} = {x,y,z} let x, y, z be set ; ::_thesis: {x,y,z} \ {[<*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*>,f4]} = {x,y,z} set xy = [<*x,y*>,f1]; set yz = [<*y,z*>,f2]; set zx = [<*z,x*>,f3]; set xyz = [<*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*>,f4]; A1: <*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*> . 3 = [<*z,x*>,f3] by FINSEQ_1:45; len <*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*> = 3 by FINSEQ_1:45; then A2: Seg 3 = dom <*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*> by FINSEQ_1:def_3; then 3 in dom <*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*> by FINSEQ_1:1; then [3,[<*z,x*>,f3]] in <*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*> by A1, FUNCT_1:1; then [<*z,x*>,f3] in rng <*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*> by XTUPLE_0:def_13; then A3: the_rank_of [<*z,x*>,f3] in the_rank_of [<*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*>,f4] by CLASSES1:82; rng <*y,z*> = {y,z} by FINSEQ_2:127; then A4: z in rng <*y,z*> by TARSKI:def_2; thus {x,y,z} \ {[<*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*>,f4]} c= {x,y,z} ; :: according to XBOOLE_0:def_10 ::_thesis: {x,y,z} c= {x,y,z} \ {[<*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*>,f4]} A5: <*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*> . 2 = [<*y,z*>,f2] by FINSEQ_1:45; let a be set ; :: according to TARSKI:def_3 ::_thesis: ( not a in {x,y,z} or a in {x,y,z} \ {[<*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*>,f4]} ) A6: <*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*> . 1 = [<*x,y*>,f1] by FINSEQ_1:45; 1 in dom <*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*> by A2, FINSEQ_1:1; then [1,[<*x,y*>,f1]] in <*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*> by A6, FUNCT_1:1; then [<*x,y*>,f1] in rng <*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*> by XTUPLE_0:def_13; then A7: the_rank_of [<*x,y*>,f1] in the_rank_of [<*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*>,f4] by CLASSES1:82; rng <*z,x*> = {z,x} by FINSEQ_2:127; then A8: x in rng <*z,x*> by TARSKI:def_2; 2 in dom <*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*> by A2, FINSEQ_1:1; then [2,[<*y,z*>,f2]] in <*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*> by A5, FUNCT_1:1; then [<*y,z*>,f2] in rng <*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*> by XTUPLE_0:def_13; then A9: the_rank_of [<*y,z*>,f2] in the_rank_of [<*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*>,f4] by CLASSES1:82; rng <*x,y*> = {x,y} by FINSEQ_2:127; then A10: y in rng <*x,y*> by TARSKI:def_2; assume A11: a in {x,y,z} ; ::_thesis: a in {x,y,z} \ {[<*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*>,f4]} then ( a = x or a = y or a = z ) by ENUMSET1:def_1; then a <> [<*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*>,f4] by A8, A3, A10, A7, A4, A9, CLASSES1:82; then not a in {[<*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*>,f4]} by TARSKI:def_1; hence a in {x,y,z} \ {[<*[<*x,y*>,f1],[<*y,z*>,f2],[<*z,x*>,f3]*>,f4]} by A11, XBOOLE_0:def_5; ::_thesis: verum end; Lm3: for f being Function of (2 -tuples_on BOOLEAN),BOOLEAN for x, y, c being set st c <> [<*x,y*>,f] holds for s being State of (2GatesCircuit (x,y,c,f)) holds ( (Following s) . (2GatesCircOutput (x,y,c,f)) = f . <*(s . [<*x,y*>,f]),(s . c)*> & (Following s) . [<*x,y*>,f] = f . <*(s . x),(s . y)*> & (Following s) . x = s . x & (Following s) . y = s . y & (Following s) . c = s . c ) proof let f be Function of (2 -tuples_on BOOLEAN),BOOLEAN; ::_thesis: for x, y, c being set st c <> [<*x,y*>,f] holds for s being State of (2GatesCircuit (x,y,c,f)) holds ( (Following s) . (2GatesCircOutput (x,y,c,f)) = f . <*(s . [<*x,y*>,f]),(s . c)*> & (Following s) . [<*x,y*>,f] = f . <*(s . x),(s . y)*> & (Following s) . x = s . x & (Following s) . y = s . y & (Following s) . c = s . c ) let x, y, c be set ; ::_thesis: ( c <> [<*x,y*>,f] implies for s being State of (2GatesCircuit (x,y,c,f)) holds ( (Following s) . (2GatesCircOutput (x,y,c,f)) = f . <*(s . [<*x,y*>,f]),(s . c)*> & (Following s) . [<*x,y*>,f] = f . <*(s . x),(s . y)*> & (Following s) . x = s . x & (Following s) . y = s . y & (Following s) . c = s . c ) ) assume A1: c <> [<*x,y*>,f] ; ::_thesis: for s being State of (2GatesCircuit (x,y,c,f)) holds ( (Following s) . (2GatesCircOutput (x,y,c,f)) = f . <*(s . [<*x,y*>,f]),(s . c)*> & (Following s) . [<*x,y*>,f] = f . <*(s . x),(s . y)*> & (Following s) . x = s . x & (Following s) . y = s . y & (Following s) . c = s . c ) set S = 2GatesCircStr (x,y,c,f); A2: InputVertices (2GatesCircStr (x,y,c,f)) = {x,y,c} by A1, FACIRC_1:57; then A3: c in InputVertices (2GatesCircStr (x,y,c,f)) by ENUMSET1:def_1; set xyf = [<*x,y*>,f]; set p = <*[<*x,y*>,f],c*>; set S2 = 1GateCircStr (<*[<*x,y*>,f],c*>,f); set A2 = 1GateCircuit ([<*x,y*>,f],c,f); InnerVertices (2GatesCircStr (x,y,c,f)) = {[<*x,y*>,f],(2GatesCircOutput (x,y,c,f))} by FACIRC_1:56; then reconsider xyf = [<*x,y*>,f] as Element of InnerVertices (2GatesCircStr (x,y,c,f)) by TARSKI:def_2; set A = 2GatesCircuit (x,y,c,f); let s be State of (2GatesCircuit (x,y,c,f)); ::_thesis: ( (Following s) . (2GatesCircOutput (x,y,c,f)) = f . <*(s . [<*x,y*>,f]),(s . c)*> & (Following s) . [<*x,y*>,f] = f . <*(s . x),(s . y)*> & (Following s) . x = s . x & (Following s) . y = s . y & (Following s) . c = s . c ) set S1 = 1GateCircStr (<*x,y*>,f); set A1 = 1GateCircuit (x,y,f); reconsider s1 = s | the carrier of (1GateCircStr (<*x,y*>,f)) as State of (1GateCircuit (x,y,f)) by FACIRC_1:26; reconsider s2 = s | the carrier of (1GateCircStr (<*[<*x,y*>,f],c*>,f)) as State of (1GateCircuit ([<*x,y*>,f],c,f)) by FACIRC_1:26; A4: dom s2 = the carrier of (1GateCircStr (<*[<*x,y*>,f],c*>,f)) by CIRCUIT1:3; A5: rng <*[<*x,y*>,f],c*> = {xyf,c} by FINSEQ_2:127; then c in rng <*[<*x,y*>,f],c*> by TARSKI:def_2; then A6: c in InputVertices (1GateCircStr (<*[<*x,y*>,f],c*>,f)) by CIRCCOMB:42; xyf in rng <*[<*x,y*>,f],c*> by A5, TARSKI:def_2; then xyf in InputVertices (1GateCircStr (<*[<*x,y*>,f],c*>,f)) by CIRCCOMB:42; then reconsider xyf9 = xyf, c9 = c as Vertex of (1GateCircStr (<*[<*x,y*>,f],c*>,f)) by A6; reconsider v2 = [<*[<*x,y*>,f],c*>,f] as Element of InnerVertices (1GateCircStr (<*[<*x,y*>,f],c*>,f)) by FACIRC_1:47; reconsider xyf1 = xyf as Element of InnerVertices (1GateCircStr (<*x,y*>,f)) by FACIRC_1:47; reconsider vx = x, vy = y as Vertex of (1GateCircStr (<*x,y*>,f)) by FACIRC_1:43; A7: dom s1 = the carrier of (1GateCircStr (<*x,y*>,f)) by CIRCUIT1:3; thus (Following s) . (2GatesCircOutput (x,y,c,f)) = (Following s2) . v2 by CIRCCOMB:64 .= f . <*(s2 . xyf9),(s2 . c9)*> by FACIRC_1:50 .= f . <*(s . [<*x,y*>,f]),(s2 . c9)*> by A4, FUNCT_1:47 .= f . <*(s . [<*x,y*>,f]),(s . c)*> by A4, FUNCT_1:47 ; ::_thesis: ( (Following s) . [<*x,y*>,f] = f . <*(s . x),(s . y)*> & (Following s) . x = s . x & (Following s) . y = s . y & (Following s) . c = s . c ) thus (Following s) . [<*x,y*>,f] = (Following s1) . xyf1 by CIRCCOMB:64 .= f . <*(s1 . vx),(s1 . vy)*> by FACIRC_1:50 .= f . <*(s . x),(s1 . vy)*> by A7, FUNCT_1:47 .= f . <*(s . x),(s . y)*> by A7, FUNCT_1:47 ; ::_thesis: ( (Following s) . x = s . x & (Following s) . y = s . y & (Following s) . c = s . c ) ( x in InputVertices (2GatesCircStr (x,y,c,f)) & y in InputVertices (2GatesCircStr (x,y,c,f)) ) by A2, ENUMSET1:def_1; hence ( (Following s) . x = s . x & (Following s) . y = s . y & (Following s) . c = s . c ) by A3, CIRCUIT2:def_5; ::_thesis: verum end; begin definition let x, y, z be set ; func GFA0CarryIStr (x,y,z) -> non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: GFACIRC1:def 5 ((1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2))) +* (1GateCircStr (<*z,x*>,and2)); coherence ((1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2))) +* (1GateCircStr (<*z,x*>,and2)) is non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign ; end; :: deftheorem defines GFA0CarryIStr GFACIRC1:def_5_:_ for x, y, z being set holds GFA0CarryIStr (x,y,z) = ((1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2))) +* (1GateCircStr (<*z,x*>,and2)); definition let x, y, z be set ; func GFA0CarryICirc (x,y,z) -> strict gate`2=den Boolean Circuit of GFA0CarryIStr (x,y,z) equals :: GFACIRC1:def 6 ((1GateCircuit (x,y,and2)) +* (1GateCircuit (y,z,and2))) +* (1GateCircuit (z,x,and2)); coherence ((1GateCircuit (x,y,and2)) +* (1GateCircuit (y,z,and2))) +* (1GateCircuit (z,x,and2)) is strict gate`2=den Boolean Circuit of GFA0CarryIStr (x,y,z) ; end; :: deftheorem defines GFA0CarryICirc GFACIRC1:def_6_:_ for x, y, z being set holds GFA0CarryICirc (x,y,z) = ((1GateCircuit (x,y,and2)) +* (1GateCircuit (y,z,and2))) +* (1GateCircuit (z,x,and2)); definition let x, y, z be set ; func GFA0CarryStr (x,y,z) -> non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: GFACIRC1:def 7 (GFA0CarryIStr (x,y,z)) +* (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)); coherence (GFA0CarryIStr (x,y,z)) +* (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)) is non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign ; end; :: deftheorem defines GFA0CarryStr GFACIRC1:def_7_:_ for x, y, z being set holds GFA0CarryStr (x,y,z) = (GFA0CarryIStr (x,y,z)) +* (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)); definition let x, y, z be set ; func GFA0CarryCirc (x,y,z) -> strict gate`2=den Boolean Circuit of GFA0CarryStr (x,y,z) equals :: GFACIRC1:def 8 (GFA0CarryICirc (x,y,z)) +* (1GateCircuit ([<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2],or3)); coherence (GFA0CarryICirc (x,y,z)) +* (1GateCircuit ([<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2],or3)) is strict gate`2=den Boolean Circuit of GFA0CarryStr (x,y,z) ; end; :: deftheorem defines GFA0CarryCirc GFACIRC1:def_8_:_ for x, y, z being set holds GFA0CarryCirc (x,y,z) = (GFA0CarryICirc (x,y,z)) +* (1GateCircuit ([<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2],or3)); definition let x, y, z be set ; func GFA0CarryOutput (x,y,z) -> Element of InnerVertices (GFA0CarryStr (x,y,z)) equals :: GFACIRC1:def 9 [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3]; coherence [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3] is Element of InnerVertices (GFA0CarryStr (x,y,z)) proof [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3] in InnerVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)) by FACIRC_1:47; hence [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3] is Element of InnerVertices (GFA0CarryStr (x,y,z)) by FACIRC_1:21; ::_thesis: verum end; end; :: deftheorem defines GFA0CarryOutput GFACIRC1:def_9_:_ for x, y, z being set holds GFA0CarryOutput (x,y,z) = [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3]; theorem Th10: :: GFACIRC1:10 for x, y, z being set holds InnerVertices (GFA0CarryIStr (x,y,z)) = {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} proof let x, y, z be set ; ::_thesis: InnerVertices (GFA0CarryIStr (x,y,z)) = {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; set xy = [<*x,y*>,and2]; set yz = [<*y,z*>,and2]; set zx = [<*z,x*>,and2]; set Cxy = 1GateCircStr (<*x,y*>,and2); set Cyz = 1GateCircStr (<*y,z*>,and2); set Czx = 1GateCircStr (<*z,x*>,and2); A1: 1GateCircStr (<*x,y*>,and2) tolerates 1GateCircStr (<*y,z*>,and2) by CIRCCOMB:47; (1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2)) tolerates 1GateCircStr (<*z,x*>,and2) by CIRCCOMB:47; then InnerVertices (GFA0CarryIStr (x,y,z)) = (InnerVertices ((1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2))) by CIRCCOMB:11 .= ((InnerVertices (1GateCircStr (<*x,y*>,and2))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2))) by A1, CIRCCOMB:11 .= ({[<*x,y*>,and2]} \/ (InnerVertices (1GateCircStr (<*y,z*>,and2)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2))) by CIRCCOMB:42 .= ({[<*x,y*>,and2]} \/ {[<*y,z*>,and2]}) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2))) by CIRCCOMB:42 .= ({[<*x,y*>,and2]} \/ {[<*y,z*>,and2]}) \/ {[<*z,x*>,and2]} by CIRCCOMB:42 .= {[<*x,y*>,and2],[<*y,z*>,and2]} \/ {[<*z,x*>,and2]} by ENUMSET1:1 .= {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} by ENUMSET1:3 ; hence InnerVertices (GFA0CarryIStr (x,y,z)) = {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} ; ::_thesis: verum end; theorem Th11: :: GFACIRC1:11 for x, y, z being set holds InnerVertices (GFA0CarryStr (x,y,z)) = {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} \/ {(GFA0CarryOutput (x,y,z))} proof let x, y, z be set ; ::_thesis: InnerVertices (GFA0CarryStr (x,y,z)) = {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} \/ {(GFA0CarryOutput (x,y,z))} set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; set f4 = or3 ; set xy = [<*x,y*>,and2]; set yz = [<*y,z*>,and2]; set zx = [<*z,x*>,and2]; set Cxy = 1GateCircStr (<*x,y*>,and2); set Cyz = 1GateCircStr (<*y,z*>,and2); set Czx = 1GateCircStr (<*z,x*>,and2); set Cxyz = 1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3); A1: 1GateCircStr (<*x,y*>,and2) tolerates ((1GateCircStr (<*y,z*>,and2)) +* (1GateCircStr (<*z,x*>,and2))) +* (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)) by CIRCCOMB:47; 1GateCircStr (<*y,z*>,and2) tolerates (1GateCircStr (<*z,x*>,and2)) +* (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)) by CIRCCOMB:47; then A2: InnerVertices ((1GateCircStr (<*y,z*>,and2)) +* ((1GateCircStr (<*z,x*>,and2)) +* (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)))) = (InnerVertices (1GateCircStr (<*y,z*>,and2))) \/ (InnerVertices ((1GateCircStr (<*z,x*>,and2)) +* (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)))) by CIRCCOMB:11; 1GateCircStr (<*z,x*>,and2) tolerates 1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3) by CIRCCOMB:47; then A3: InnerVertices ((1GateCircStr (<*z,x*>,and2)) +* (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3))) = (InnerVertices (1GateCircStr (<*z,x*>,and2))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3))) by CIRCCOMB:11; thus InnerVertices (GFA0CarryStr (x,y,z)) = InnerVertices (((1GateCircStr (<*x,y*>,and2)) +* ((1GateCircStr (<*y,z*>,and2)) +* (1GateCircStr (<*z,x*>,and2)))) +* (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3))) by CIRCCOMB:6 .= InnerVertices ((1GateCircStr (<*x,y*>,and2)) +* (((1GateCircStr (<*y,z*>,and2)) +* (1GateCircStr (<*z,x*>,and2))) +* (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)))) by CIRCCOMB:6 .= (InnerVertices (1GateCircStr (<*x,y*>,and2))) \/ (InnerVertices (((1GateCircStr (<*y,z*>,and2)) +* (1GateCircStr (<*z,x*>,and2))) +* (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)))) by A1, CIRCCOMB:11 .= (InnerVertices (1GateCircStr (<*x,y*>,and2))) \/ (InnerVertices ((1GateCircStr (<*y,z*>,and2)) +* ((1GateCircStr (<*z,x*>,and2)) +* (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3))))) by CIRCCOMB:6 .= ((InnerVertices (1GateCircStr (<*x,y*>,and2))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2)))) \/ ((InnerVertices (1GateCircStr (<*z,x*>,and2))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)))) by A2, A3, XBOOLE_1:4 .= (((InnerVertices (1GateCircStr (<*x,y*>,and2))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2)))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3))) by XBOOLE_1:4 .= (({[<*x,y*>,and2]} \/ (InnerVertices (1GateCircStr (<*y,z*>,and2)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2)))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3))) by CIRCCOMB:42 .= (({[<*x,y*>,and2]} \/ {[<*y,z*>,and2]}) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2)))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3))) by CIRCCOMB:42 .= (({[<*x,y*>,and2]} \/ {[<*y,z*>,and2]}) \/ {[<*z,x*>,and2]}) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3))) by CIRCCOMB:42 .= ({[<*x,y*>,and2],[<*y,z*>,and2]} \/ {[<*z,x*>,and2]}) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3))) by ENUMSET1:1 .= {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3))) by ENUMSET1:3 .= {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} \/ {(GFA0CarryOutput (x,y,z))} by CIRCCOMB:42 ; ::_thesis: verum end; theorem Th12: :: GFACIRC1:12 for x, y, z being set holds InnerVertices (GFA0CarryStr (x,y,z)) is Relation proof let x, y, z be set ; ::_thesis: InnerVertices (GFA0CarryStr (x,y,z)) is Relation set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; set f4 = or3 ; set xy = [<*x,y*>,and2]; set yz = [<*y,z*>,and2]; set zx = [<*z,x*>,and2]; set Cxy = 1GateCircStr (<*x,y*>,and2); set Cyz = 1GateCircStr (<*y,z*>,and2); set Czx = 1GateCircStr (<*z,x*>,and2); set Cxyz = 1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3); ( InnerVertices (1GateCircStr (<*x,y*>,and2)) is Relation & InnerVertices (1GateCircStr (<*y,z*>,and2)) is Relation ) by FACIRC_1:38; then ( InnerVertices (1GateCircStr (<*z,x*>,and2)) is Relation & InnerVertices ((1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2))) is Relation ) by FACIRC_1:3, FACIRC_1:38; then ( InnerVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)) is Relation & InnerVertices (GFA0CarryIStr (x,y,z)) is Relation ) by FACIRC_1:3, FACIRC_1:38; hence InnerVertices (GFA0CarryStr (x,y,z)) is Relation by FACIRC_1:3; ::_thesis: verum end; theorem Th13: :: GFACIRC1:13 for x, y, z being set st x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] holds InputVertices (GFA0CarryIStr (x,y,z)) = {x,y,z} proof let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] implies InputVertices (GFA0CarryIStr (x,y,z)) = {x,y,z} ) set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; set xy = [<*x,y*>,and2]; set yz = [<*y,z*>,and2]; set zx = [<*z,x*>,and2]; set Cxy = 1GateCircStr (<*x,y*>,and2); set Cyz = 1GateCircStr (<*y,z*>,and2); set Czx = 1GateCircStr (<*z,x*>,and2); assume that A1: x <> [<*y,z*>,and2] and A2: ( y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] ) ; ::_thesis: InputVertices (GFA0CarryIStr (x,y,z)) = {x,y,z} A3: not [<*x,y*>,and2] in {y,z} by A1, A2, Lm1; A4: not [<*z,x*>,and2] in {x,y,z} by A1, A2, Lm1; A5: y <> [<*y,z*>,and2] by FACIRC_2:2; A6: ( not z in {[<*x,y*>,and2],[<*y,z*>,and2]} & not x in {[<*x,y*>,and2],[<*y,z*>,and2]} ) by A1, A2, Lm1; A7: 1GateCircStr (<*x,y*>,and2) tolerates 1GateCircStr (<*y,z*>,and2) by CIRCCOMB:47; InputVertices (GFA0CarryIStr (x,y,z)) = ((InputVertices ((1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2)))) \ (InnerVertices (1GateCircStr (<*z,x*>,and2)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ (InnerVertices ((1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2))))) by CIRCCMB2:5, CIRCCOMB:47 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2))) \ (InnerVertices (1GateCircStr (<*y,z*>,and2)))) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2))) \ (InnerVertices (1GateCircStr (<*x,y*>,and2))))) \ (InnerVertices (1GateCircStr (<*z,x*>,and2)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ (InnerVertices ((1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2))))) by CIRCCMB2:5, CIRCCOMB:47 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2))) \ (InnerVertices (1GateCircStr (<*y,z*>,and2)))) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2))) \ (InnerVertices (1GateCircStr (<*x,y*>,and2))))) \ (InnerVertices (1GateCircStr (<*z,x*>,and2)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ ((InnerVertices (1GateCircStr (<*x,y*>,and2))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2))))) by A7, CIRCCOMB:11 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2))) \ {[<*y,z*>,and2]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2))) \ (InnerVertices (1GateCircStr (<*x,y*>,and2))))) \ (InnerVertices (1GateCircStr (<*z,x*>,and2)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ ((InnerVertices (1GateCircStr (<*x,y*>,and2))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2))))) by CIRCCOMB:42 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2))) \ {[<*y,z*>,and2]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2))) \ {[<*x,y*>,and2]})) \ (InnerVertices (1GateCircStr (<*z,x*>,and2)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ ((InnerVertices (1GateCircStr (<*x,y*>,and2))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2))))) by CIRCCOMB:42 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2))) \ {[<*y,z*>,and2]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2))) \ {[<*x,y*>,and2]})) \ {[<*z,x*>,and2]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ ((InnerVertices (1GateCircStr (<*x,y*>,and2))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2))))) by CIRCCOMB:42 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2))) \ {[<*y,z*>,and2]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2))) \ {[<*x,y*>,and2]})) \ {[<*z,x*>,and2]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ ({[<*x,y*>,and2]} \/ (InnerVertices (1GateCircStr (<*y,z*>,and2))))) by CIRCCOMB:42 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2))) \ {[<*y,z*>,and2]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2))) \ {[<*x,y*>,and2]})) \ {[<*z,x*>,and2]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ ({[<*x,y*>,and2]} \/ {[<*y,z*>,and2]})) by CIRCCOMB:42 .= ((({x,y} \ {[<*y,z*>,and2]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2))) \ {[<*x,y*>,and2]})) \ {[<*z,x*>,and2]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ ({[<*x,y*>,and2]} \/ {[<*y,z*>,and2]})) by FACIRC_1:40 .= ((({x,y} \ {[<*y,z*>,and2]}) \/ ({y,z} \ {[<*x,y*>,and2]})) \ {[<*z,x*>,and2]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ ({[<*x,y*>,and2]} \/ {[<*y,z*>,and2]})) by FACIRC_1:40 .= ((({x,y} \ {[<*y,z*>,and2]}) \/ ({y,z} \ {[<*x,y*>,and2]})) \ {[<*z,x*>,and2]}) \/ ({z,x} \ ({[<*x,y*>,and2]} \/ {[<*y,z*>,and2]})) by FACIRC_1:40 .= ((({x,y} \ {[<*y,z*>,and2]}) \/ ({y,z} \ {[<*x,y*>,and2]})) \ {[<*z,x*>,and2]}) \/ ({z,x} \ {[<*x,y*>,and2],[<*y,z*>,and2]}) by ENUMSET1:1 .= (({x,y} \/ ({y,z} \ {[<*x,y*>,and2]})) \ {[<*z,x*>,and2]}) \/ ({z,x} \ {[<*x,y*>,and2],[<*y,z*>,and2]}) by A1, A5, FACIRC_2:1 .= (({x,y} \/ {y,z}) \ {[<*z,x*>,and2]}) \/ ({z,x} \ {[<*x,y*>,and2],[<*y,z*>,and2]}) by A3, ZFMISC_1:57 .= (({x,y} \/ {y,z}) \ {[<*z,x*>,and2]}) \/ {z,x} by A6, ZFMISC_1:63 .= ({x,y,y,z} \ {[<*z,x*>,and2]}) \/ {z,x} by ENUMSET1:5 .= ({y,y,x,z} \ {[<*z,x*>,and2]}) \/ {z,x} by ENUMSET1:67 .= ({y,x,z} \ {[<*z,x*>,and2]}) \/ {z,x} by ENUMSET1:31 .= ({x,y,z} \ {[<*z,x*>,and2]}) \/ {z,x} by ENUMSET1:58 .= {x,y,z} \/ {z,x} by A4, ZFMISC_1:57 .= {x,y,z,z,x} by ENUMSET1:9 .= {x,y,z,z} \/ {x} by ENUMSET1:10 .= {z,z,x,y} \/ {x} by ENUMSET1:73 .= {z,x,y} \/ {x} by ENUMSET1:31 .= {z,x,y,x} by ENUMSET1:6 .= {x,x,y,z} by ENUMSET1:70 .= {x,y,z} by ENUMSET1:31 ; hence InputVertices (GFA0CarryIStr (x,y,z)) = {x,y,z} ; ::_thesis: verum end; theorem Th14: :: GFACIRC1:14 for x, y, z being set st x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] holds InputVertices (GFA0CarryStr (x,y,z)) = {x,y,z} proof let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] implies InputVertices (GFA0CarryStr (x,y,z)) = {x,y,z} ) set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; set f4 = or3 ; set xy = [<*x,y*>,and2]; set yz = [<*y,z*>,and2]; set zx = [<*z,x*>,and2]; set xyz = [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3]; set S = 1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3); set MI = GFA0CarryIStr (x,y,z); assume A1: ( x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] ) ; ::_thesis: InputVertices (GFA0CarryStr (x,y,z)) = {x,y,z} A2: InputVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)) = rng <*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*> by CIRCCOMB:42 .= {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} by FINSEQ_2:128 ; A3: ( InnerVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)) = {[<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3]} & {x,y,z} \ {[<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3]} = {x,y,z} ) by Lm2, CIRCCOMB:42; A4: {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} \ {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} = {} by XBOOLE_1:37; thus InputVertices (GFA0CarryStr (x,y,z)) = ((InputVertices (GFA0CarryIStr (x,y,z))) \ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)))) \/ ((InputVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3))) \ (InnerVertices (GFA0CarryIStr (x,y,z)))) by CIRCCMB2:5, CIRCCOMB:47 .= {x,y,z} \/ ({[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} \ (InnerVertices (GFA0CarryIStr (x,y,z)))) by A1, A2, A3, Th13 .= {x,y,z} \/ {} by A4, Th10 .= {x,y,z} ; ::_thesis: verum end; theorem :: GFACIRC1:15 for x, y, z being non pair set holds InputVertices (GFA0CarryStr (x,y,z)) is without_pairs proof let x, y, z be non pair set ; ::_thesis: InputVertices (GFA0CarryStr (x,y,z)) is without_pairs set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; set f4 = or3 ; set xy = [<*x,y*>,and2]; set yz = [<*y,z*>,and2]; set zx = [<*z,x*>,and2]; set Cxy = 1GateCircStr (<*x,y*>,and2); set Cyz = 1GateCircStr (<*y,z*>,and2); set Czx = 1GateCircStr (<*z,x*>,and2); set S = 1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3); set M = GFA0CarryStr (x,y,z); set MI = GFA0CarryIStr (x,y,z); given xx being pair set such that A1: xx in InputVertices (GFA0CarryStr (x,y,z)) ; :: according to FACIRC_1:def_2 ::_thesis: contradiction A2: 1GateCircStr (<*x,y*>,and2) tolerates 1GateCircStr (<*y,z*>,and2) by CIRCCOMB:47; A3: ( InnerVertices (1GateCircStr (<*z,x*>,and2)) = {[<*z,x*>,and2]} & (1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2)) tolerates 1GateCircStr (<*z,x*>,and2) ) by CIRCCOMB:42, CIRCCOMB:47; ( InnerVertices (1GateCircStr (<*x,y*>,and2)) = {[<*x,y*>,and2]} & InnerVertices (1GateCircStr (<*y,z*>,and2)) = {[<*y,z*>,and2]} ) by CIRCCOMB:42; then InnerVertices ((1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2))) = {[<*x,y*>,and2]} \/ {[<*y,z*>,and2]} by A2, CIRCCOMB:11; then A4: InnerVertices (GFA0CarryIStr (x,y,z)) = ({[<*x,y*>,and2]} \/ {[<*y,z*>,and2]}) \/ {[<*z,x*>,and2]} by A3, CIRCCOMB:11 .= {[<*x,y*>,and2],[<*y,z*>,and2]} \/ {[<*z,x*>,and2]} by ENUMSET1:1 .= {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} by ENUMSET1:3 ; InputVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)) = {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} by FACIRC_1:42; then A5: (InputVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3))) \ (InnerVertices (GFA0CarryIStr (x,y,z))) = {} by A4, XBOOLE_1:37; ( InputVertices (1GateCircStr (<*x,y*>,and2)) is without_pairs & InputVertices (1GateCircStr (<*y,z*>,and2)) is without_pairs ) by FACIRC_1:41; then ( InputVertices (1GateCircStr (<*z,x*>,and2)) is without_pairs & InputVertices ((1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2))) is without_pairs ) by FACIRC_1:9, FACIRC_1:41; then A6: InputVertices (GFA0CarryIStr (x,y,z)) is without_pairs by FACIRC_1:9; InnerVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)) is Relation by FACIRC_1:38; then InputVertices (GFA0CarryStr (x,y,z)) = (InputVertices (GFA0CarryIStr (x,y,z))) \/ ((InputVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3))) \ (InnerVertices (GFA0CarryIStr (x,y,z)))) by A6, FACIRC_1:6; hence contradiction by A6, A1, A5, FACIRC_1:def_2; ::_thesis: verum end; theorem Th16: :: GFACIRC1:16 for x, y, z being set holds ( x in the carrier of (GFA0CarryStr (x,y,z)) & y in the carrier of (GFA0CarryStr (x,y,z)) & z in the carrier of (GFA0CarryStr (x,y,z)) & [<*x,y*>,and2] in the carrier of (GFA0CarryStr (x,y,z)) & [<*y,z*>,and2] in the carrier of (GFA0CarryStr (x,y,z)) & [<*z,x*>,and2] in the carrier of (GFA0CarryStr (x,y,z)) & [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3] in the carrier of (GFA0CarryStr (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( x in the carrier of (GFA0CarryStr (x,y,z)) & y in the carrier of (GFA0CarryStr (x,y,z)) & z in the carrier of (GFA0CarryStr (x,y,z)) & [<*x,y*>,and2] in the carrier of (GFA0CarryStr (x,y,z)) & [<*y,z*>,and2] in the carrier of (GFA0CarryStr (x,y,z)) & [<*z,x*>,and2] in the carrier of (GFA0CarryStr (x,y,z)) & [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3] in the carrier of (GFA0CarryStr (x,y,z)) ) set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; set f4 = or3 ; set xy = [<*x,y*>,and2]; set yz = [<*y,z*>,and2]; set zx = [<*z,x*>,and2]; set xyz = [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3]; set Cxy = 1GateCircStr (<*x,y*>,and2); set Cyz = 1GateCircStr (<*y,z*>,and2); set Czx = 1GateCircStr (<*z,x*>,and2); set Cxyz = 1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3); set p = <*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>; z in the carrier of (1GateCircStr (<*z,x*>,and2)) by FACIRC_1:43; then A1: z in the carrier of (GFA0CarryIStr (x,y,z)) by FACIRC_1:20; [<*z,x*>,and2] in the carrier of (1GateCircStr (<*z,x*>,and2)) by FACIRC_1:43; then A2: [<*z,x*>,and2] in the carrier of (GFA0CarryIStr (x,y,z)) by FACIRC_1:20; y in the carrier of (1GateCircStr (<*x,y*>,and2)) by FACIRC_1:43; then y in the carrier of ((1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2))) by FACIRC_1:20; then A3: y in the carrier of (GFA0CarryIStr (x,y,z)) by FACIRC_1:20; ( the carrier of (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)) = (rng <*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>) \/ {[<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3]} & [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3] in {[<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3]} ) by CIRCCOMB:def_6, TARSKI:def_1; then A4: [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3] in the carrier of (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)) by XBOOLE_0:def_3; [<*y,z*>,and2] in the carrier of (1GateCircStr (<*y,z*>,and2)) by FACIRC_1:43; then [<*y,z*>,and2] in the carrier of ((1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2))) by FACIRC_1:20; then A5: [<*y,z*>,and2] in the carrier of (GFA0CarryIStr (x,y,z)) by FACIRC_1:20; [<*x,y*>,and2] in the carrier of (1GateCircStr (<*x,y*>,and2)) by FACIRC_1:43; then [<*x,y*>,and2] in the carrier of ((1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2))) by FACIRC_1:20; then A6: [<*x,y*>,and2] in the carrier of (GFA0CarryIStr (x,y,z)) by FACIRC_1:20; x in the carrier of (1GateCircStr (<*z,x*>,and2)) by FACIRC_1:43; then x in the carrier of (GFA0CarryIStr (x,y,z)) by FACIRC_1:20; hence ( x in the carrier of (GFA0CarryStr (x,y,z)) & y in the carrier of (GFA0CarryStr (x,y,z)) & z in the carrier of (GFA0CarryStr (x,y,z)) & [<*x,y*>,and2] in the carrier of (GFA0CarryStr (x,y,z)) & [<*y,z*>,and2] in the carrier of (GFA0CarryStr (x,y,z)) & [<*z,x*>,and2] in the carrier of (GFA0CarryStr (x,y,z)) & [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3] in the carrier of (GFA0CarryStr (x,y,z)) ) by A3, A1, A6, A5, A2, A4, FACIRC_1:20; ::_thesis: verum end; theorem Th17: :: GFACIRC1:17 for x, y, z being set holds ( [<*x,y*>,and2] in InnerVertices (GFA0CarryStr (x,y,z)) & [<*y,z*>,and2] in InnerVertices (GFA0CarryStr (x,y,z)) & [<*z,x*>,and2] in InnerVertices (GFA0CarryStr (x,y,z)) & GFA0CarryOutput (x,y,z) in InnerVertices (GFA0CarryStr (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( [<*x,y*>,and2] in InnerVertices (GFA0CarryStr (x,y,z)) & [<*y,z*>,and2] in InnerVertices (GFA0CarryStr (x,y,z)) & [<*z,x*>,and2] in InnerVertices (GFA0CarryStr (x,y,z)) & GFA0CarryOutput (x,y,z) in InnerVertices (GFA0CarryStr (x,y,z)) ) set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; set xy = [<*x,y*>,and2]; set yz = [<*y,z*>,and2]; set zx = [<*z,x*>,and2]; InnerVertices (GFA0CarryStr (x,y,z)) = {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} \/ {(GFA0CarryOutput (x,y,z))} by Th11 .= {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2],(GFA0CarryOutput (x,y,z))} by ENUMSET1:6 ; hence ( [<*x,y*>,and2] in InnerVertices (GFA0CarryStr (x,y,z)) & [<*y,z*>,and2] in InnerVertices (GFA0CarryStr (x,y,z)) & [<*z,x*>,and2] in InnerVertices (GFA0CarryStr (x,y,z)) & GFA0CarryOutput (x,y,z) in InnerVertices (GFA0CarryStr (x,y,z)) ) by ENUMSET1:def_2; ::_thesis: verum end; theorem Th18: :: GFACIRC1:18 for x, y, z being set st x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] holds ( x in InputVertices (GFA0CarryStr (x,y,z)) & y in InputVertices (GFA0CarryStr (x,y,z)) & z in InputVertices (GFA0CarryStr (x,y,z)) ) proof set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] implies ( x in InputVertices (GFA0CarryStr (x,y,z)) & y in InputVertices (GFA0CarryStr (x,y,z)) & z in InputVertices (GFA0CarryStr (x,y,z)) ) ) assume ( x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] ) ; ::_thesis: ( x in InputVertices (GFA0CarryStr (x,y,z)) & y in InputVertices (GFA0CarryStr (x,y,z)) & z in InputVertices (GFA0CarryStr (x,y,z)) ) then InputVertices (GFA0CarryStr (x,y,z)) = {x,y,z} by Th14; hence ( x in InputVertices (GFA0CarryStr (x,y,z)) & y in InputVertices (GFA0CarryStr (x,y,z)) & z in InputVertices (GFA0CarryStr (x,y,z)) ) by ENUMSET1:def_1; ::_thesis: verum end; theorem Th19: :: GFACIRC1:19 for x, y, z being non pair set holds InputVertices (GFA0CarryStr (x,y,z)) = {x,y,z} proof let x, y, z be non pair set ; ::_thesis: InputVertices (GFA0CarryStr (x,y,z)) = {x,y,z} set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; set f4 = or3 ; set xy = [<*x,y*>,and2]; set yz = [<*y,z*>,and2]; set zx = [<*z,x*>,and2]; set Cxy = 1GateCircStr (<*x,y*>,and2); set Cyz = 1GateCircStr (<*y,z*>,and2); set Czx = 1GateCircStr (<*z,x*>,and2); set M = GFA0CarryStr (x,y,z); set MI = GFA0CarryIStr (x,y,z); set S = 1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3); A1: ( InputVertices (1GateCircStr (<*x,y*>,and2)) = {x,y} & InputVertices (1GateCircStr (<*y,z*>,and2)) = {y,z} ) by FACIRC_1:40; A2: InputVertices (1GateCircStr (<*z,x*>,and2)) = {z,x} by FACIRC_1:40; A3: InputVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)) = {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} by FACIRC_1:42; A4: InnerVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3)) is Relation by FACIRC_1:38; A5: ( InnerVertices (1GateCircStr (<*x,y*>,and2)) = {[<*x,y*>,and2]} & InnerVertices (1GateCircStr (<*y,z*>,and2)) = {[<*y,z*>,and2]} ) by CIRCCOMB:42; 1GateCircStr (<*x,y*>,and2) tolerates 1GateCircStr (<*y,z*>,and2) by CIRCCOMB:47; then A6: ( InnerVertices (1GateCircStr (<*z,x*>,and2)) = {[<*z,x*>,and2]} & InnerVertices ((1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2))) = {[<*x,y*>,and2]} \/ {[<*y,z*>,and2]} ) by A5, CIRCCOMB:11, CIRCCOMB:42; (1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2)) tolerates 1GateCircStr (<*z,x*>,and2) by CIRCCOMB:47; then InnerVertices (GFA0CarryIStr (x,y,z)) = ({[<*x,y*>,and2]} \/ {[<*y,z*>,and2]}) \/ {[<*z,x*>,and2]} by A6, CIRCCOMB:11 .= {[<*x,y*>,and2],[<*y,z*>,and2]} \/ {[<*z,x*>,and2]} by ENUMSET1:1 .= {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} by ENUMSET1:3 ; then A7: (InputVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3))) \ (InnerVertices (GFA0CarryIStr (x,y,z))) = {} by A3, XBOOLE_1:37; A8: ( InputVertices (1GateCircStr (<*x,y*>,and2)) is without_pairs & InputVertices (1GateCircStr (<*y,z*>,and2)) is without_pairs ) by FACIRC_1:41; then A9: ( InputVertices (1GateCircStr (<*z,x*>,and2)) is without_pairs & InputVertices ((1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2))) is without_pairs ) by FACIRC_1:9, FACIRC_1:41; then InputVertices (GFA0CarryIStr (x,y,z)) is without_pairs by FACIRC_1:9; then InputVertices (GFA0CarryStr (x,y,z)) = (InputVertices (GFA0CarryIStr (x,y,z))) \/ ((InputVertices (1GateCircStr (<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3))) \ (InnerVertices (GFA0CarryIStr (x,y,z)))) by A4, FACIRC_1:6; hence InputVertices (GFA0CarryStr (x,y,z)) = (InputVertices ((1GateCircStr (<*x,y*>,and2)) +* (1GateCircStr (<*y,z*>,and2)))) \/ (InputVertices (1GateCircStr (<*z,x*>,and2))) by A9, A6, A7, FACIRC_1:7 .= ((InputVertices (1GateCircStr (<*x,y*>,and2))) \/ (InputVertices (1GateCircStr (<*y,z*>,and2)))) \/ (InputVertices (1GateCircStr (<*z,x*>,and2))) by A8, A5, FACIRC_1:7 .= {x,y,y,z} \/ {z,x} by A1, A2, ENUMSET1:5 .= {y,y,x,z} \/ {z,x} by ENUMSET1:67 .= {y,x,z} \/ {z,x} by ENUMSET1:31 .= {x,y,z} \/ {z,x} by ENUMSET1:58 .= {x,y,z} \/ ({z} \/ {x}) by ENUMSET1:1 .= ({x,y,z} \/ {z}) \/ {x} by XBOOLE_1:4 .= ({z,x,y} \/ {z}) \/ {x} by ENUMSET1:59 .= {z,z,x,y} \/ {x} by ENUMSET1:4 .= {z,x,y} \/ {x} by ENUMSET1:31 .= {x,y,z} \/ {x} by ENUMSET1:59 .= {x,x,y,z} by ENUMSET1:4 .= {x,y,z} by ENUMSET1:31 ; ::_thesis: verum end; theorem Th20: :: GFACIRC1:20 for x, y, z being set for s being State of (GFA0CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,and2] = a1 '&' a2 & (Following s) . [<*y,z*>,and2] = a2 '&' a3 & (Following s) . [<*z,x*>,and2] = a3 '&' a1 ) proof let x, y, z be set ; ::_thesis: for s being State of (GFA0CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,and2] = a1 '&' a2 & (Following s) . [<*y,z*>,and2] = a2 '&' a3 & (Following s) . [<*z,x*>,and2] = a3 '&' a1 ) set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; let s be State of (GFA0CarryCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,and2] = a1 '&' a2 & (Following s) . [<*y,z*>,and2] = a2 '&' a3 & (Following s) . [<*z,x*>,and2] = a3 '&' a1 ) set xy = [<*x,y*>,and2]; set yz = [<*y,z*>,and2]; set zx = [<*z,x*>,and2]; let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies ( (Following s) . [<*x,y*>,and2] = a1 '&' a2 & (Following s) . [<*y,z*>,and2] = a2 '&' a3 & (Following s) . [<*z,x*>,and2] = a3 '&' a1 ) ) assume that A1: a1 = s . x and A2: a2 = s . y and A3: a3 = s . z ; ::_thesis: ( (Following s) . [<*x,y*>,and2] = a1 '&' a2 & (Following s) . [<*y,z*>,and2] = a2 '&' a3 & (Following s) . [<*z,x*>,and2] = a3 '&' a1 ) set S = GFA0CarryStr (x,y,z); A4: InnerVertices (GFA0CarryStr (x,y,z)) = the carrier' of (GFA0CarryStr (x,y,z)) by FACIRC_1:37; A5: y in the carrier of (GFA0CarryStr (x,y,z)) by Th16; A6: x in the carrier of (GFA0CarryStr (x,y,z)) by Th16; A7: dom s = the carrier of (GFA0CarryStr (x,y,z)) by CIRCUIT1:3; [<*x,y*>,and2] in InnerVertices (GFA0CarryStr (x,y,z)) by Th17; hence (Following s) . [<*x,y*>,and2] = and2 . (s * <*x,y*>) by A4, FACIRC_1:35 .= and2 . <*a1,a2*> by A1, A2, A7, A6, A5, FINSEQ_2:125 .= a1 '&' a2 by TWOSCOMP:def_1 ; ::_thesis: ( (Following s) . [<*y,z*>,and2] = a2 '&' a3 & (Following s) . [<*z,x*>,and2] = a3 '&' a1 ) A8: z in the carrier of (GFA0CarryStr (x,y,z)) by Th16; [<*y,z*>,and2] in InnerVertices (GFA0CarryStr (x,y,z)) by Th17; hence (Following s) . [<*y,z*>,and2] = and2 . (s * <*y,z*>) by A4, FACIRC_1:35 .= and2 . <*a2,a3*> by A2, A3, A7, A5, A8, FINSEQ_2:125 .= a2 '&' a3 by TWOSCOMP:def_1 ; ::_thesis: (Following s) . [<*z,x*>,and2] = a3 '&' a1 [<*z,x*>,and2] in InnerVertices (GFA0CarryStr (x,y,z)) by Th17; hence (Following s) . [<*z,x*>,and2] = and2 . (s * <*z,x*>) by A4, FACIRC_1:35 .= and2 . <*a3,a1*> by A1, A3, A7, A6, A8, FINSEQ_2:125 .= a3 '&' a1 by TWOSCOMP:def_1 ; ::_thesis: verum end; theorem Th21: :: GFACIRC1:21 for x, y, z being set for s being State of (GFA0CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . [<*x,y*>,and2] & a2 = s . [<*y,z*>,and2] & a3 = s . [<*z,x*>,and2] holds (Following s) . (GFA0CarryOutput (x,y,z)) = (a1 'or' a2) 'or' a3 proof let x, y, z be set ; ::_thesis: for s being State of (GFA0CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . [<*x,y*>,and2] & a2 = s . [<*y,z*>,and2] & a3 = s . [<*z,x*>,and2] holds (Following s) . (GFA0CarryOutput (x,y,z)) = (a1 'or' a2) 'or' a3 set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; set f4 = or3 ; let s be State of (GFA0CarryCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . [<*x,y*>,and2] & a2 = s . [<*y,z*>,and2] & a3 = s . [<*z,x*>,and2] holds (Following s) . (GFA0CarryOutput (x,y,z)) = (a1 'or' a2) 'or' a3 set xy = [<*x,y*>,and2]; set yz = [<*y,z*>,and2]; set zx = [<*z,x*>,and2]; let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . [<*x,y*>,and2] & a2 = s . [<*y,z*>,and2] & a3 = s . [<*z,x*>,and2] implies (Following s) . (GFA0CarryOutput (x,y,z)) = (a1 'or' a2) 'or' a3 ) assume A1: ( a1 = s . [<*x,y*>,and2] & a2 = s . [<*y,z*>,and2] & a3 = s . [<*z,x*>,and2] ) ; ::_thesis: (Following s) . (GFA0CarryOutput (x,y,z)) = (a1 'or' a2) 'or' a3 set S = GFA0CarryStr (x,y,z); reconsider xy = [<*x,y*>,and2], yz = [<*y,z*>,and2], zx = [<*z,x*>,and2] as Element of InnerVertices (GFA0CarryStr (x,y,z)) by Th17; A2: dom s = the carrier of (GFA0CarryStr (x,y,z)) by CIRCUIT1:3; InnerVertices (GFA0CarryStr (x,y,z)) = the carrier' of (GFA0CarryStr (x,y,z)) by FACIRC_1:37; hence (Following s) . (GFA0CarryOutput (x,y,z)) = or3 . (s * <*xy,yz,zx*>) by FACIRC_1:35 .= or3 . <*a1,a2,a3*> by A1, A2, FINSEQ_2:126 .= (a1 'or' a2) 'or' a3 by TWOSCOMP:14 ; ::_thesis: verum end; theorem Th22: :: GFACIRC1:22 for x, y, z being set st x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] holds for s being State of (GFA0CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA0CarryOutput (x,y,z)) = ((a1 '&' a2) 'or' (a2 '&' a3)) 'or' (a3 '&' a1) & (Following (s,2)) . [<*x,y*>,and2] = a1 '&' a2 & (Following (s,2)) . [<*y,z*>,and2] = a2 '&' a3 & (Following (s,2)) . [<*z,x*>,and2] = a3 '&' a1 ) proof set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] implies for s being State of (GFA0CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA0CarryOutput (x,y,z)) = ((a1 '&' a2) 'or' (a2 '&' a3)) 'or' (a3 '&' a1) & (Following (s,2)) . [<*x,y*>,and2] = a1 '&' a2 & (Following (s,2)) . [<*y,z*>,and2] = a2 '&' a3 & (Following (s,2)) . [<*z,x*>,and2] = a3 '&' a1 ) ) assume A1: ( x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] ) ; ::_thesis: for s being State of (GFA0CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA0CarryOutput (x,y,z)) = ((a1 '&' a2) 'or' (a2 '&' a3)) 'or' (a3 '&' a1) & (Following (s,2)) . [<*x,y*>,and2] = a1 '&' a2 & (Following (s,2)) . [<*y,z*>,and2] = a2 '&' a3 & (Following (s,2)) . [<*z,x*>,and2] = a3 '&' a1 ) set S = GFA0CarryStr (x,y,z); reconsider x9 = x, y9 = y, z9 = z as Vertex of (GFA0CarryStr (x,y,z)) by Th16; let s be State of (GFA0CarryCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA0CarryOutput (x,y,z)) = ((a1 '&' a2) 'or' (a2 '&' a3)) 'or' (a3 '&' a1) & (Following (s,2)) . [<*x,y*>,and2] = a1 '&' a2 & (Following (s,2)) . [<*y,z*>,and2] = a2 '&' a3 & (Following (s,2)) . [<*z,x*>,and2] = a3 '&' a1 ) y in InputVertices (GFA0CarryStr (x,y,z)) by A1, Th18; then A2: (Following s) . y9 = s . y by CIRCUIT2:def_5; z in InputVertices (GFA0CarryStr (x,y,z)) by A1, Th18; then A3: (Following s) . z9 = s . z by CIRCUIT2:def_5; set xy = [<*x,y*>,and2]; set yz = [<*y,z*>,and2]; set zx = [<*z,x*>,and2]; A4: Following (s,2) = Following (Following s) by FACIRC_1:15; let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies ( (Following (s,2)) . (GFA0CarryOutput (x,y,z)) = ((a1 '&' a2) 'or' (a2 '&' a3)) 'or' (a3 '&' a1) & (Following (s,2)) . [<*x,y*>,and2] = a1 '&' a2 & (Following (s,2)) . [<*y,z*>,and2] = a2 '&' a3 & (Following (s,2)) . [<*z,x*>,and2] = a3 '&' a1 ) ) assume A5: ( a1 = s . x & a2 = s . y & a3 = s . z ) ; ::_thesis: ( (Following (s,2)) . (GFA0CarryOutput (x,y,z)) = ((a1 '&' a2) 'or' (a2 '&' a3)) 'or' (a3 '&' a1) & (Following (s,2)) . [<*x,y*>,and2] = a1 '&' a2 & (Following (s,2)) . [<*y,z*>,and2] = a2 '&' a3 & (Following (s,2)) . [<*z,x*>,and2] = a3 '&' a1 ) A6: (Following s) . [<*z,x*>,and2] = a3 '&' a1 by A5, Th20; ( (Following s) . [<*x,y*>,and2] = a1 '&' a2 & (Following s) . [<*y,z*>,and2] = a2 '&' a3 ) by A5, Th20; hence (Following (s,2)) . (GFA0CarryOutput (x,y,z)) = ((a1 '&' a2) 'or' (a2 '&' a3)) 'or' (a3 '&' a1) by A4, A6, Th21; ::_thesis: ( (Following (s,2)) . [<*x,y*>,and2] = a1 '&' a2 & (Following (s,2)) . [<*y,z*>,and2] = a2 '&' a3 & (Following (s,2)) . [<*z,x*>,and2] = a3 '&' a1 ) x in InputVertices (GFA0CarryStr (x,y,z)) by A1, Th18; then (Following s) . x9 = s . x by CIRCUIT2:def_5; hence ( (Following (s,2)) . [<*x,y*>,and2] = a1 '&' a2 & (Following (s,2)) . [<*y,z*>,and2] = a2 '&' a3 & (Following (s,2)) . [<*z,x*>,and2] = a3 '&' a1 ) by A5, A2, A3, A4, Th20; ::_thesis: verum end; theorem Th23: :: GFACIRC1:23 for x, y, z being set st x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] holds for s being State of (GFA0CarryCirc (x,y,z)) holds Following (s,2) is stable proof set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] implies for s being State of (GFA0CarryCirc (x,y,z)) holds Following (s,2) is stable ) assume A1: ( x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] ) ; ::_thesis: for s being State of (GFA0CarryCirc (x,y,z)) holds Following (s,2) is stable set S = GFA0CarryStr (x,y,z); reconsider xx = x, yy = y, zz = z as Vertex of (GFA0CarryStr (x,y,z)) by Th16; let s be State of (GFA0CarryCirc (x,y,z)); ::_thesis: Following (s,2) is stable set a1 = s . xx; set a2 = s . yy; set a3 = s . zz; set ffs = Following (s,2); set fffs = Following (Following (s,2)); set xy = [<*x,y*>,and2]; set yz = [<*y,z*>,and2]; set zx = [<*z,x*>,and2]; A2: Following (s,2) = Following (Following s) by FACIRC_1:15; A3: z in InputVertices (GFA0CarryStr (x,y,z)) by A1, Th18; then (Following s) . z = s . zz by CIRCUIT2:def_5; then A4: (Following (s,2)) . z = s . zz by A2, A3, CIRCUIT2:def_5; A5: y in InputVertices (GFA0CarryStr (x,y,z)) by A1, Th18; then (Following s) . y = s . yy by CIRCUIT2:def_5; then A6: (Following (s,2)) . y = s . yy by A2, A5, CIRCUIT2:def_5; A7: x in InputVertices (GFA0CarryStr (x,y,z)) by A1, Th18; then (Following s) . x = s . xx by CIRCUIT2:def_5; then A8: (Following (s,2)) . x = s . xx by A2, A7, CIRCUIT2:def_5; s . zz = s . z ; then A9: (Following (s,2)) . [<*x,y*>,and2] = (s . xx) '&' (s . yy) by A1, Th22; s . yy = s . y ; then A10: (Following (s,2)) . [<*z,x*>,and2] = (s . xx) '&' (s . zz) by A1, Th22; s . xx = s . x ; then A11: (Following (s,2)) . [<*y,z*>,and2] = (s . yy) '&' (s . zz) by A1, Th22; A12: (Following (s,2)) . (GFA0CarryOutput (x,y,z)) = (((s . xx) '&' (s . yy)) 'or' ((s . yy) '&' (s . zz))) 'or' ((s . zz) '&' (s . xx)) by A1, Th22; A13: now__::_thesis:_for_a_being_set_st_a_in_the_carrier_of_(GFA0CarryStr_(x,y,z))_holds_ (Following_(s,2))_._a_=_(Following_(Following_(s,2)))_._a let a be set ; ::_thesis: ( a in the carrier of (GFA0CarryStr (x,y,z)) implies (Following (s,2)) . a = (Following (Following (s,2))) . a ) assume A14: a in the carrier of (GFA0CarryStr (x,y,z)) ; ::_thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a then reconsider v = a as Vertex of (GFA0CarryStr (x,y,z)) ; A15: v in (InputVertices (GFA0CarryStr (x,y,z))) \/ (InnerVertices (GFA0CarryStr (x,y,z))) by A14, XBOOLE_1:45; thus (Following (s,2)) . a = (Following (Following (s,2))) . a ::_thesis: verum proof percases ( v in InputVertices (GFA0CarryStr (x,y,z)) or v in InnerVertices (GFA0CarryStr (x,y,z)) ) by A15, XBOOLE_0:def_3; suppose v in InputVertices (GFA0CarryStr (x,y,z)) ; ::_thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a hence (Following (s,2)) . a = (Following (Following (s,2))) . a by CIRCUIT2:def_5; ::_thesis: verum end; suppose v in InnerVertices (GFA0CarryStr (x,y,z)) ; ::_thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a then v in {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} \/ {(GFA0CarryOutput (x,y,z))} by Th11; then ( v in {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} or v in {(GFA0CarryOutput (x,y,z))} ) by XBOOLE_0:def_3; then ( v = [<*x,y*>,and2] or v = [<*y,z*>,and2] or v = [<*z,x*>,and2] or v = GFA0CarryOutput (x,y,z) ) by ENUMSET1:def_1, TARSKI:def_1; hence (Following (s,2)) . a = (Following (Following (s,2))) . a by A12, A9, A11, A10, A8, A6, A4, Th20, Th21; ::_thesis: verum end; end; end; end; ( dom (Following (Following (s,2))) = the carrier of (GFA0CarryStr (x,y,z)) & dom (Following (s,2)) = the carrier of (GFA0CarryStr (x,y,z)) ) by CIRCUIT1:3; hence Following (s,2) = Following (Following (s,2)) by A13, FUNCT_1:2; :: according to CIRCUIT2:def_6 ::_thesis: verum end; definition let x, y, z be set ; func GFA0AdderStr (x,y,z) -> non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: GFACIRC1:def 10 2GatesCircStr (x,y,z,xor2); coherence 2GatesCircStr (x,y,z,xor2) is non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign ; end; :: deftheorem defines GFA0AdderStr GFACIRC1:def_10_:_ for x, y, z being set holds GFA0AdderStr (x,y,z) = 2GatesCircStr (x,y,z,xor2); definition let x, y, z be set ; func GFA0AdderCirc (x,y,z) -> strict gate`2=den Boolean Circuit of GFA0AdderStr (x,y,z) equals :: GFACIRC1:def 11 2GatesCircuit (x,y,z,xor2); coherence 2GatesCircuit (x,y,z,xor2) is strict gate`2=den Boolean Circuit of GFA0AdderStr (x,y,z) ; end; :: deftheorem defines GFA0AdderCirc GFACIRC1:def_11_:_ for x, y, z being set holds GFA0AdderCirc (x,y,z) = 2GatesCircuit (x,y,z,xor2); definition let x, y, z be set ; func GFA0AdderOutput (x,y,z) -> Element of InnerVertices (GFA0AdderStr (x,y,z)) equals :: GFACIRC1:def 12 2GatesCircOutput (x,y,z,xor2); coherence 2GatesCircOutput (x,y,z,xor2) is Element of InnerVertices (GFA0AdderStr (x,y,z)) ; end; :: deftheorem defines GFA0AdderOutput GFACIRC1:def_12_:_ for x, y, z being set holds GFA0AdderOutput (x,y,z) = 2GatesCircOutput (x,y,z,xor2); theorem Th24: :: GFACIRC1:24 for x, y, z being set holds InnerVertices (GFA0AdderStr (x,y,z)) = {[<*x,y*>,xor2]} \/ {(GFA0AdderOutput (x,y,z))} proof let x, y, z be set ; ::_thesis: InnerVertices (GFA0AdderStr (x,y,z)) = {[<*x,y*>,xor2]} \/ {(GFA0AdderOutput (x,y,z))} set f = xor2 ; set xy = [<*x,y*>,xor2]; set S = GFA0AdderStr (x,y,z); thus InnerVertices (GFA0AdderStr (x,y,z)) = {[<*x,y*>,xor2],(GFA0AdderOutput (x,y,z))} by FACIRC_1:56 .= {[<*x,y*>,xor2]} \/ {(GFA0AdderOutput (x,y,z))} by ENUMSET1:1 ; ::_thesis: verum end; theorem :: GFACIRC1:25 for x, y, z being set holds ( x in the carrier of (GFA0AdderStr (x,y,z)) & y in the carrier of (GFA0AdderStr (x,y,z)) & z in the carrier of (GFA0AdderStr (x,y,z)) & [<*x,y*>,xor2] in the carrier of (GFA0AdderStr (x,y,z)) & [<*[<*x,y*>,xor2],z*>,xor2] in the carrier of (GFA0AdderStr (x,y,z)) ) by FACIRC_1:60, FACIRC_1:61; theorem Th26: :: GFACIRC1:26 for x, y, z being set holds ( [<*x,y*>,xor2] in InnerVertices (GFA0AdderStr (x,y,z)) & GFA0AdderOutput (x,y,z) in InnerVertices (GFA0AdderStr (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( [<*x,y*>,xor2] in InnerVertices (GFA0AdderStr (x,y,z)) & GFA0AdderOutput (x,y,z) in InnerVertices (GFA0AdderStr (x,y,z)) ) set f = xor2 ; set S = GFA0AdderStr (x,y,z); InnerVertices (GFA0AdderStr (x,y,z)) = {[<*x,y*>,xor2]} \/ {(GFA0AdderOutput (x,y,z))} by Th24 .= {[<*x,y*>,xor2],(GFA0AdderOutput (x,y,z))} by ENUMSET1:1 ; hence ( [<*x,y*>,xor2] in InnerVertices (GFA0AdderStr (x,y,z)) & GFA0AdderOutput (x,y,z) in InnerVertices (GFA0AdderStr (x,y,z)) ) by TARSKI:def_2; ::_thesis: verum end; theorem Th27: :: GFACIRC1:27 for x, y, z being set st z <> [<*x,y*>,xor2] holds ( x in InputVertices (GFA0AdderStr (x,y,z)) & y in InputVertices (GFA0AdderStr (x,y,z)) & z in InputVertices (GFA0AdderStr (x,y,z)) ) proof set f = xor2 ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2] implies ( x in InputVertices (GFA0AdderStr (x,y,z)) & y in InputVertices (GFA0AdderStr (x,y,z)) & z in InputVertices (GFA0AdderStr (x,y,z)) ) ) assume A1: z <> [<*x,y*>,xor2] ; ::_thesis: ( x in InputVertices (GFA0AdderStr (x,y,z)) & y in InputVertices (GFA0AdderStr (x,y,z)) & z in InputVertices (GFA0AdderStr (x,y,z)) ) set S = GFA0AdderStr (x,y,z); InputVertices (GFA0AdderStr (x,y,z)) = {x,y,z} by A1, FACIRC_1:57; hence ( x in InputVertices (GFA0AdderStr (x,y,z)) & y in InputVertices (GFA0AdderStr (x,y,z)) & z in InputVertices (GFA0AdderStr (x,y,z)) ) by ENUMSET1:def_1; ::_thesis: verum end; theorem Th28: :: GFACIRC1:28 for x, y, z being set st z <> [<*x,y*>,xor2] holds for s being State of (GFA0AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) proof set f = xor2 ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2] implies for s being State of (GFA0AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) ) assume A1: z <> [<*x,y*>,xor2] ; ::_thesis: for s being State of (GFA0AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) set A = GFA0AdderCirc (x,y,z); set xy = [<*x,y*>,xor2]; let s be State of (GFA0AdderCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies ( (Following s) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) ) assume that A2: ( a1 = s . x & a2 = s . y ) and A3: a3 = s . z ; ::_thesis: ( (Following s) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) (Following s) . [<*x,y*>,xor2] = xor2 . <*a1,a2*> by A1, A2, Lm3; hence (Following s) . [<*x,y*>,xor2] = a1 'xor' a2 by TWOSCOMP:def_13; ::_thesis: ( (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) thus ( (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) by A1, A2, A3, Lm3; ::_thesis: verum end; theorem Th29: :: GFACIRC1:29 for x, y, z being set st z <> [<*x,y*>,xor2] holds for s being State of (GFA0AdderCirc (x,y,z)) for a1a2, a1, a2, a3 being Element of BOOLEAN st a1a2 = s . [<*x,y*>,xor2] & a3 = s . z holds (Following s) . (GFA0AdderOutput (x,y,z)) = a1a2 'xor' a3 proof set f = xor2 ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2] implies for s being State of (GFA0AdderCirc (x,y,z)) for a1a2, a1, a2, a3 being Element of BOOLEAN st a1a2 = s . [<*x,y*>,xor2] & a3 = s . z holds (Following s) . (GFA0AdderOutput (x,y,z)) = a1a2 'xor' a3 ) assume A1: z <> [<*x,y*>,xor2] ; ::_thesis: for s being State of (GFA0AdderCirc (x,y,z)) for a1a2, a1, a2, a3 being Element of BOOLEAN st a1a2 = s . [<*x,y*>,xor2] & a3 = s . z holds (Following s) . (GFA0AdderOutput (x,y,z)) = a1a2 'xor' a3 set A = GFA0AdderCirc (x,y,z); set xy = [<*x,y*>,xor2]; let s be State of (GFA0AdderCirc (x,y,z)); ::_thesis: for a1a2, a1, a2, a3 being Element of BOOLEAN st a1a2 = s . [<*x,y*>,xor2] & a3 = s . z holds (Following s) . (GFA0AdderOutput (x,y,z)) = a1a2 'xor' a3 let a1a2, a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1a2 = s . [<*x,y*>,xor2] & a3 = s . z implies (Following s) . (GFA0AdderOutput (x,y,z)) = a1a2 'xor' a3 ) assume A2: ( a1a2 = s . [<*x,y*>,xor2] & a3 = s . z ) ; ::_thesis: (Following s) . (GFA0AdderOutput (x,y,z)) = a1a2 'xor' a3 thus (Following s) . (GFA0AdderOutput (x,y,z)) = xor2 . <*(s . [<*x,y*>,xor2]),(s . z)*> by A1, Lm3 .= a1a2 'xor' a3 by A2, TWOSCOMP:def_13 ; ::_thesis: verum end; theorem Th30: :: GFACIRC1:30 for x, y, z being set st z <> [<*x,y*>,xor2] holds for s being State of (GFA0AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA0AdderOutput (x,y,z)) = (a1 'xor' a2) 'xor' a3 & (Following (s,2)) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) proof set f = xor2 ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2] implies for s being State of (GFA0AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA0AdderOutput (x,y,z)) = (a1 'xor' a2) 'xor' a3 & (Following (s,2)) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) ) assume A1: z <> [<*x,y*>,xor2] ; ::_thesis: for s being State of (GFA0AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA0AdderOutput (x,y,z)) = (a1 'xor' a2) 'xor' a3 & (Following (s,2)) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) set xy = [<*x,y*>,xor2]; set A = GFA0AdderCirc (x,y,z); let s be State of (GFA0AdderCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA0AdderOutput (x,y,z)) = (a1 'xor' a2) 'xor' a3 & (Following (s,2)) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies ( (Following (s,2)) . (GFA0AdderOutput (x,y,z)) = (a1 'xor' a2) 'xor' a3 & (Following (s,2)) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) ) assume that A2: ( a1 = s . x & a2 = s . y ) and A3: a3 = s . z ; ::_thesis: ( (Following (s,2)) . (GFA0AdderOutput (x,y,z)) = (a1 'xor' a2) 'xor' a3 & (Following (s,2)) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) thus (Following (s,2)) . (GFA0AdderOutput (x,y,z)) = xor2 . <*(xor2 . <*a1,a2*>),a3*> by A1, A2, A3, FACIRC_1:62 .= xor2 . <*(a1 'xor' a2),a3*> by TWOSCOMP:def_13 .= (a1 'xor' a2) 'xor' a3 by TWOSCOMP:def_13 ; ::_thesis: ( (Following (s,2)) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) (Following (s,2)) . [<*x,y*>,xor2] = xor2 . <*a1,a2*> by A1, A2, FACIRC_1:62; hence (Following (s,2)) . [<*x,y*>,xor2] = a1 'xor' a2 by TWOSCOMP:def_13; ::_thesis: ( (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) thus ( (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) by A1, A2, A3, FACIRC_1:62; ::_thesis: verum end; definition let x, y, z be set ; func BitGFA0Str (x,y,z) -> non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: GFACIRC1:def 13 (GFA0AdderStr (x,y,z)) +* (GFA0CarryStr (x,y,z)); coherence (GFA0AdderStr (x,y,z)) +* (GFA0CarryStr (x,y,z)) is non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign ; end; :: deftheorem defines BitGFA0Str GFACIRC1:def_13_:_ for x, y, z being set holds BitGFA0Str (x,y,z) = (GFA0AdderStr (x,y,z)) +* (GFA0CarryStr (x,y,z)); definition let x, y, z be set ; func BitGFA0Circ (x,y,z) -> strict gate`2=den Boolean Circuit of BitGFA0Str (x,y,z) equals :: GFACIRC1:def 14 (GFA0AdderCirc (x,y,z)) +* (GFA0CarryCirc (x,y,z)); coherence (GFA0AdderCirc (x,y,z)) +* (GFA0CarryCirc (x,y,z)) is strict gate`2=den Boolean Circuit of BitGFA0Str (x,y,z) ; end; :: deftheorem defines BitGFA0Circ GFACIRC1:def_14_:_ for x, y, z being set holds BitGFA0Circ (x,y,z) = (GFA0AdderCirc (x,y,z)) +* (GFA0CarryCirc (x,y,z)); theorem Th31: :: GFACIRC1:31 for x, y, z being set holds InnerVertices (BitGFA0Str (x,y,z)) = (({[<*x,y*>,xor2]} \/ {(GFA0AdderOutput (x,y,z))}) \/ {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]}) \/ {(GFA0CarryOutput (x,y,z))} proof let x, y, z be set ; ::_thesis: InnerVertices (BitGFA0Str (x,y,z)) = (({[<*x,y*>,xor2]} \/ {(GFA0AdderOutput (x,y,z))}) \/ {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]}) \/ {(GFA0CarryOutput (x,y,z))} set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; set f0 = xor2 ; set xyf0 = [<*x,y*>,xor2]; set xyf1 = [<*x,y*>,and2]; set yzf2 = [<*y,z*>,and2]; set zxf3 = [<*z,x*>,and2]; set S = BitGFA0Str (x,y,z); set S1 = GFA0AdderStr (x,y,z); set S2 = GFA0CarryStr (x,y,z); set A1 = GFA0AdderOutput (x,y,z); set A2 = GFA0CarryOutput (x,y,z); thus InnerVertices (BitGFA0Str (x,y,z)) = (InnerVertices (GFA0AdderStr (x,y,z))) \/ (InnerVertices (GFA0CarryStr (x,y,z))) by FACIRC_1:27 .= ({[<*x,y*>,xor2]} \/ {(GFA0AdderOutput (x,y,z))}) \/ (InnerVertices (GFA0CarryStr (x,y,z))) by Th24 .= ({[<*x,y*>,xor2]} \/ {(GFA0AdderOutput (x,y,z))}) \/ ({[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} \/ {(GFA0CarryOutput (x,y,z))}) by Th11 .= (({[<*x,y*>,xor2]} \/ {(GFA0AdderOutput (x,y,z))}) \/ {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]}) \/ {(GFA0CarryOutput (x,y,z))} by XBOOLE_1:4 ; ::_thesis: verum end; theorem :: GFACIRC1:32 for x, y, z being set holds InnerVertices (BitGFA0Str (x,y,z)) is Relation proof let x, y, z be set ; ::_thesis: InnerVertices (BitGFA0Str (x,y,z)) is Relation set S1 = GFA0AdderStr (x,y,z); set S2 = GFA0CarryStr (x,y,z); ( InnerVertices (GFA0AdderStr (x,y,z)) is Relation & InnerVertices (GFA0CarryStr (x,y,z)) is Relation ) by Th12, FACIRC_1:58; hence InnerVertices (BitGFA0Str (x,y,z)) is Relation by FACIRC_1:3; ::_thesis: verum end; theorem Th33: :: GFACIRC1:33 for x, y, z being set st z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] holds InputVertices (BitGFA0Str (x,y,z)) = {x,y,z} proof set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; set f0 = xor2 ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] implies InputVertices (BitGFA0Str (x,y,z)) = {x,y,z} ) assume A1: ( z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] ) ; ::_thesis: InputVertices (BitGFA0Str (x,y,z)) = {x,y,z} set S2 = GFA0CarryStr (x,y,z); set S1 = GFA0AdderStr (x,y,z); ( InputVertices (GFA0AdderStr (x,y,z)) = {x,y,z} & InputVertices (GFA0CarryStr (x,y,z)) = {x,y,z} ) by A1, Th14, FACIRC_1:57; hence InputVertices (BitGFA0Str (x,y,z)) = {x,y,z} by CIRCCOMB:47, FACIRC_2:21; ::_thesis: verum end; theorem Th34: :: GFACIRC1:34 for x, y, z being non pair set holds InputVertices (BitGFA0Str (x,y,z)) = {x,y,z} proof let x, y, z be non pair set ; ::_thesis: InputVertices (BitGFA0Str (x,y,z)) = {x,y,z} set S = BitGFA0Str (x,y,z); set S1 = GFA0AdderStr (x,y,z); set S2 = GFA0CarryStr (x,y,z); A1: ( InputVertices (GFA0AdderStr (x,y,z)) = {x,y,z} & InputVertices (GFA0CarryStr (x,y,z)) = {x,y,z} ) by Th19, FACIRC_1:57; ( InnerVertices (GFA0AdderStr (x,y,z)) is Relation & InnerVertices (GFA0CarryStr (x,y,z)) is Relation ) by Th12, FACIRC_1:58; hence InputVertices (BitGFA0Str (x,y,z)) = {x,y,z} \/ {x,y,z} by A1, FACIRC_1:7 .= {x,y,z} ; ::_thesis: verum end; theorem :: GFACIRC1:35 for x, y, z being non pair set holds InputVertices (BitGFA0Str (x,y,z)) is without_pairs proof let x, y, z be non pair set ; ::_thesis: InputVertices (BitGFA0Str (x,y,z)) is without_pairs InputVertices (BitGFA0Str (x,y,z)) = {x,y,z} by Th34; hence InputVertices (BitGFA0Str (x,y,z)) is without_pairs ; ::_thesis: verum end; theorem :: GFACIRC1:36 for x, y, z being set holds ( x in the carrier of (BitGFA0Str (x,y,z)) & y in the carrier of (BitGFA0Str (x,y,z)) & z in the carrier of (BitGFA0Str (x,y,z)) & [<*x,y*>,xor2] in the carrier of (BitGFA0Str (x,y,z)) & [<*[<*x,y*>,xor2],z*>,xor2] in the carrier of (BitGFA0Str (x,y,z)) & [<*x,y*>,and2] in the carrier of (BitGFA0Str (x,y,z)) & [<*y,z*>,and2] in the carrier of (BitGFA0Str (x,y,z)) & [<*z,x*>,and2] in the carrier of (BitGFA0Str (x,y,z)) & [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3] in the carrier of (BitGFA0Str (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( x in the carrier of (BitGFA0Str (x,y,z)) & y in the carrier of (BitGFA0Str (x,y,z)) & z in the carrier of (BitGFA0Str (x,y,z)) & [<*x,y*>,xor2] in the carrier of (BitGFA0Str (x,y,z)) & [<*[<*x,y*>,xor2],z*>,xor2] in the carrier of (BitGFA0Str (x,y,z)) & [<*x,y*>,and2] in the carrier of (BitGFA0Str (x,y,z)) & [<*y,z*>,and2] in the carrier of (BitGFA0Str (x,y,z)) & [<*z,x*>,and2] in the carrier of (BitGFA0Str (x,y,z)) & [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3] in the carrier of (BitGFA0Str (x,y,z)) ) set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; set f4 = or3 ; set f0 = xor2 ; set xy = [<*x,y*>,and2]; set yz = [<*y,z*>,and2]; set zx = [<*z,x*>,and2]; set xyz = [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3]; set S1 = GFA0AdderStr (x,y,z); set S2 = GFA0CarryStr (x,y,z); A1: ( x in the carrier of (GFA0AdderStr (x,y,z)) & y in the carrier of (GFA0AdderStr (x,y,z)) ) by FACIRC_1:60; A2: ( z in the carrier of (GFA0AdderStr (x,y,z)) & [<*x,y*>,xor2] in the carrier of (GFA0AdderStr (x,y,z)) ) by FACIRC_1:60, FACIRC_1:61; A3: [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3] in the carrier of (GFA0CarryStr (x,y,z)) by Th16; A4: ( [<*y,z*>,and2] in the carrier of (GFA0CarryStr (x,y,z)) & [<*z,x*>,and2] in the carrier of (GFA0CarryStr (x,y,z)) ) by Th16; ( [<*[<*x,y*>,xor2],z*>,xor2] in the carrier of (GFA0AdderStr (x,y,z)) & [<*x,y*>,and2] in the carrier of (GFA0CarryStr (x,y,z)) ) by Th16, FACIRC_1:61; hence ( x in the carrier of (BitGFA0Str (x,y,z)) & y in the carrier of (BitGFA0Str (x,y,z)) & z in the carrier of (BitGFA0Str (x,y,z)) & [<*x,y*>,xor2] in the carrier of (BitGFA0Str (x,y,z)) & [<*[<*x,y*>,xor2],z*>,xor2] in the carrier of (BitGFA0Str (x,y,z)) & [<*x,y*>,and2] in the carrier of (BitGFA0Str (x,y,z)) & [<*y,z*>,and2] in the carrier of (BitGFA0Str (x,y,z)) & [<*z,x*>,and2] in the carrier of (BitGFA0Str (x,y,z)) & [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3] in the carrier of (BitGFA0Str (x,y,z)) ) by A1, A2, A4, A3, FACIRC_1:20; ::_thesis: verum end; theorem Th37: :: GFACIRC1:37 for x, y, z being set holds ( [<*x,y*>,xor2] in InnerVertices (BitGFA0Str (x,y,z)) & GFA0AdderOutput (x,y,z) in InnerVertices (BitGFA0Str (x,y,z)) & [<*x,y*>,and2] in InnerVertices (BitGFA0Str (x,y,z)) & [<*y,z*>,and2] in InnerVertices (BitGFA0Str (x,y,z)) & [<*z,x*>,and2] in InnerVertices (BitGFA0Str (x,y,z)) & GFA0CarryOutput (x,y,z) in InnerVertices (BitGFA0Str (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( [<*x,y*>,xor2] in InnerVertices (BitGFA0Str (x,y,z)) & GFA0AdderOutput (x,y,z) in InnerVertices (BitGFA0Str (x,y,z)) & [<*x,y*>,and2] in InnerVertices (BitGFA0Str (x,y,z)) & [<*y,z*>,and2] in InnerVertices (BitGFA0Str (x,y,z)) & [<*z,x*>,and2] in InnerVertices (BitGFA0Str (x,y,z)) & GFA0CarryOutput (x,y,z) in InnerVertices (BitGFA0Str (x,y,z)) ) set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; set f0 = xor2 ; set xyf0 = [<*x,y*>,xor2]; set xyf1 = [<*x,y*>,and2]; set yzf2 = [<*y,z*>,and2]; set zxf3 = [<*z,x*>,and2]; set S = BitGFA0Str (x,y,z); set A1 = GFA0AdderOutput (x,y,z); set A2 = GFA0CarryOutput (x,y,z); InnerVertices (BitGFA0Str (x,y,z)) = (({[<*x,y*>,xor2]} \/ {(GFA0AdderOutput (x,y,z))}) \/ {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]}) \/ {(GFA0CarryOutput (x,y,z))} by Th31 .= ({[<*x,y*>,xor2],(GFA0AdderOutput (x,y,z))} \/ {[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]}) \/ {(GFA0CarryOutput (x,y,z))} by ENUMSET1:1 .= {[<*x,y*>,xor2],(GFA0AdderOutput (x,y,z)),[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]} \/ {(GFA0CarryOutput (x,y,z))} by ENUMSET1:8 .= {[<*x,y*>,xor2],(GFA0AdderOutput (x,y,z)),[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2],(GFA0CarryOutput (x,y,z))} by ENUMSET1:15 ; hence ( [<*x,y*>,xor2] in InnerVertices (BitGFA0Str (x,y,z)) & GFA0AdderOutput (x,y,z) in InnerVertices (BitGFA0Str (x,y,z)) & [<*x,y*>,and2] in InnerVertices (BitGFA0Str (x,y,z)) & [<*y,z*>,and2] in InnerVertices (BitGFA0Str (x,y,z)) & [<*z,x*>,and2] in InnerVertices (BitGFA0Str (x,y,z)) & GFA0CarryOutput (x,y,z) in InnerVertices (BitGFA0Str (x,y,z)) ) by ENUMSET1:def_4; ::_thesis: verum end; theorem :: GFACIRC1:38 for x, y, z being set st z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] holds ( x in InputVertices (BitGFA0Str (x,y,z)) & y in InputVertices (BitGFA0Str (x,y,z)) & z in InputVertices (BitGFA0Str (x,y,z)) ) proof set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; set f0 = xor2 ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] implies ( x in InputVertices (BitGFA0Str (x,y,z)) & y in InputVertices (BitGFA0Str (x,y,z)) & z in InputVertices (BitGFA0Str (x,y,z)) ) ) assume A1: ( z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] ) ; ::_thesis: ( x in InputVertices (BitGFA0Str (x,y,z)) & y in InputVertices (BitGFA0Str (x,y,z)) & z in InputVertices (BitGFA0Str (x,y,z)) ) set S = BitGFA0Str (x,y,z); InputVertices (BitGFA0Str (x,y,z)) = {x,y,z} by A1, Th33; hence ( x in InputVertices (BitGFA0Str (x,y,z)) & y in InputVertices (BitGFA0Str (x,y,z)) & z in InputVertices (BitGFA0Str (x,y,z)) ) by ENUMSET1:def_1; ::_thesis: verum end; definition let x, y, z be set ; func BitGFA0CarryOutput (x,y,z) -> Element of InnerVertices (BitGFA0Str (x,y,z)) equals :: GFACIRC1:def 15 [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3]; coherence [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3] is Element of InnerVertices (BitGFA0Str (x,y,z)) proof GFA0CarryOutput (x,y,z) in InnerVertices (BitGFA0Str (x,y,z)) by Th37; hence [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3] is Element of InnerVertices (BitGFA0Str (x,y,z)) ; ::_thesis: verum end; end; :: deftheorem defines BitGFA0CarryOutput GFACIRC1:def_15_:_ for x, y, z being set holds BitGFA0CarryOutput (x,y,z) = [<*[<*x,y*>,and2],[<*y,z*>,and2],[<*z,x*>,and2]*>,or3]; definition let x, y, z be set ; func BitGFA0AdderOutput (x,y,z) -> Element of InnerVertices (BitGFA0Str (x,y,z)) equals :: GFACIRC1:def 16 2GatesCircOutput (x,y,z,xor2); coherence 2GatesCircOutput (x,y,z,xor2) is Element of InnerVertices (BitGFA0Str (x,y,z)) proof GFA0AdderOutput (x,y,z) in InnerVertices (BitGFA0Str (x,y,z)) by Th37; hence 2GatesCircOutput (x,y,z,xor2) is Element of InnerVertices (BitGFA0Str (x,y,z)) ; ::_thesis: verum end; end; :: deftheorem defines BitGFA0AdderOutput GFACIRC1:def_16_:_ for x, y, z being set holds BitGFA0AdderOutput (x,y,z) = 2GatesCircOutput (x,y,z,xor2); theorem :: GFACIRC1:39 for x, y, z being set st z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] holds for s being State of (BitGFA0Circ (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA0AdderOutput (x,y,z)) = (a1 'xor' a2) 'xor' a3 & (Following (s,2)) . (GFA0CarryOutput (x,y,z)) = ((a1 '&' a2) 'or' (a2 '&' a3)) 'or' (a3 '&' a1) ) proof set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; set f0 = xor2 ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] implies for s being State of (BitGFA0Circ (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA0AdderOutput (x,y,z)) = (a1 'xor' a2) 'xor' a3 & (Following (s,2)) . (GFA0CarryOutput (x,y,z)) = ((a1 '&' a2) 'or' (a2 '&' a3)) 'or' (a3 '&' a1) ) ) assume that A1: z <> [<*x,y*>,xor2] and A2: ( x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] ) ; ::_thesis: for s being State of (BitGFA0Circ (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA0AdderOutput (x,y,z)) = (a1 'xor' a2) 'xor' a3 & (Following (s,2)) . (GFA0CarryOutput (x,y,z)) = ((a1 '&' a2) 'or' (a2 '&' a3)) 'or' (a3 '&' a1) ) set S2 = GFA0CarryStr (x,y,z); set S1 = GFA0AdderStr (x,y,z); InputVertices (GFA0AdderStr (x,y,z)) = {x,y,z} by A1, FACIRC_1:57; then A3: InputVertices (GFA0AdderStr (x,y,z)) = InputVertices (GFA0CarryStr (x,y,z)) by A2, Th14; set A2 = GFA0CarryCirc (x,y,z); set A1 = GFA0AdderCirc (x,y,z); set A = BitGFA0Circ (x,y,z); let s be State of (BitGFA0Circ (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA0AdderOutput (x,y,z)) = (a1 'xor' a2) 'xor' a3 & (Following (s,2)) . (GFA0CarryOutput (x,y,z)) = ((a1 '&' a2) 'or' (a2 '&' a3)) 'or' (a3 '&' a1) ) let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies ( (Following (s,2)) . (GFA0AdderOutput (x,y,z)) = (a1 'xor' a2) 'xor' a3 & (Following (s,2)) . (GFA0CarryOutput (x,y,z)) = ((a1 '&' a2) 'or' (a2 '&' a3)) 'or' (a3 '&' a1) ) ) assume that A4: a1 = s . x and A5: a2 = s . y and A6: a3 = s . z ; ::_thesis: ( (Following (s,2)) . (GFA0AdderOutput (x,y,z)) = (a1 'xor' a2) 'xor' a3 & (Following (s,2)) . (GFA0CarryOutput (x,y,z)) = ((a1 '&' a2) 'or' (a2 '&' a3)) 'or' (a3 '&' a1) ) reconsider s1 = s | the carrier of (GFA0AdderStr (x,y,z)) as State of (GFA0AdderCirc (x,y,z)) by FACIRC_1:26; A7: dom s1 = the carrier of (GFA0AdderStr (x,y,z)) by CIRCUIT1:3; z in the carrier of (GFA0AdderStr (x,y,z)) by FACIRC_1:60; then A8: a3 = s1 . z by A6, A7, FUNCT_1:47; y in the carrier of (GFA0AdderStr (x,y,z)) by FACIRC_1:60; then A9: a2 = s1 . y by A5, A7, FUNCT_1:47; reconsider t = s as State of ((GFA0AdderCirc (x,y,z)) +* (GFA0CarryCirc (x,y,z))) ; InnerVertices (GFA0CarryStr (x,y,z)) misses InputVertices (GFA0CarryStr (x,y,z)) by XBOOLE_1:79; then A10: (Following (t,2)) . (GFA0AdderOutput (x,y,z)) = (Following (s1,2)) . (GFA0AdderOutput (x,y,z)) by A3, FACIRC_1:32; reconsider s2 = s | the carrier of (GFA0CarryStr (x,y,z)) as State of (GFA0CarryCirc (x,y,z)) by FACIRC_1:26; A11: dom s2 = the carrier of (GFA0CarryStr (x,y,z)) by CIRCUIT1:3; x in the carrier of (GFA0AdderStr (x,y,z)) by FACIRC_1:60; then a1 = s1 . x by A4, A7, FUNCT_1:47; hence (Following (s,2)) . (GFA0AdderOutput (x,y,z)) = (a1 'xor' a2) 'xor' a3 by A1, A9, A8, A10, Th30; ::_thesis: (Following (s,2)) . (GFA0CarryOutput (x,y,z)) = ((a1 '&' a2) 'or' (a2 '&' a3)) 'or' (a3 '&' a1) InnerVertices (GFA0AdderStr (x,y,z)) misses InputVertices (GFA0AdderStr (x,y,z)) by XBOOLE_1:79; then A12: (Following (t,2)) . (GFA0CarryOutput (x,y,z)) = (Following (s2,2)) . (GFA0CarryOutput (x,y,z)) by A3, FACIRC_1:33; z in the carrier of (GFA0CarryStr (x,y,z)) by Th16; then A13: a3 = s2 . z by A6, A11, FUNCT_1:47; y in the carrier of (GFA0CarryStr (x,y,z)) by Th16; then A14: a2 = s2 . y by A5, A11, FUNCT_1:47; x in the carrier of (GFA0CarryStr (x,y,z)) by Th16; then a1 = s2 . x by A4, A11, FUNCT_1:47; hence (Following (s,2)) . (GFA0CarryOutput (x,y,z)) = ((a1 '&' a2) 'or' (a2 '&' a3)) 'or' (a3 '&' a1) by A2, A14, A13, A12, Th22; ::_thesis: verum end; theorem :: GFACIRC1:40 for x, y, z being set st z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] holds for s being State of (BitGFA0Circ (x,y,z)) holds Following (s,2) is stable proof set f1 = and2 ; set f2 = and2 ; set f3 = and2 ; set f0 = xor2 ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] implies for s being State of (BitGFA0Circ (x,y,z)) holds Following (s,2) is stable ) assume that A1: z <> [<*x,y*>,xor2] and A2: ( x <> [<*y,z*>,and2] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2] ) ; ::_thesis: for s being State of (BitGFA0Circ (x,y,z)) holds Following (s,2) is stable set A = BitGFA0Circ (x,y,z); let s be State of (BitGFA0Circ (x,y,z)); ::_thesis: Following (s,2) is stable set S2 = GFA0CarryStr (x,y,z); set S1 = GFA0AdderStr (x,y,z); InputVertices (GFA0AdderStr (x,y,z)) = {x,y,z} by A1, FACIRC_1:57; then A3: InputVertices (GFA0AdderStr (x,y,z)) = InputVertices (GFA0CarryStr (x,y,z)) by A2, Th14; set A1 = GFA0AdderCirc (x,y,z); reconsider s1 = s | the carrier of (GFA0AdderStr (x,y,z)) as State of (GFA0AdderCirc (x,y,z)) by FACIRC_1:26; Following (s1,2) is stable by A1, FACIRC_1:63; then A4: Following (s1,2) = Following (Following (s1,2)) by CIRCUIT2:def_6 .= Following (s1,(2 + 1)) by FACIRC_1:12 ; set A2 = GFA0CarryCirc (x,y,z); reconsider s2 = s | the carrier of (GFA0CarryStr (x,y,z)) as State of (GFA0CarryCirc (x,y,z)) by FACIRC_1:26; Following (s2,2) is stable by A2, Th23; then A5: Following (s2,2) = Following (Following (s2,2)) by CIRCUIT2:def_6 .= Following (s2,(2 + 1)) by FACIRC_1:12 ; reconsider t = s as State of ((GFA0AdderCirc (x,y,z)) +* (GFA0CarryCirc (x,y,z))) ; set S = BitGFA0Str (x,y,z); A6: dom (Following (s,3)) = the carrier of (BitGFA0Str (x,y,z)) by CIRCUIT1:3; InnerVertices (GFA0CarryStr (x,y,z)) misses InputVertices (GFA0CarryStr (x,y,z)) by XBOOLE_1:79; then A7: ( Following (s1,2) = (Following (t,2)) | the carrier of (GFA0AdderStr (x,y,z)) & Following (s1,3) = (Following (t,3)) | the carrier of (GFA0AdderStr (x,y,z)) ) by A3, FACIRC_1:30; InnerVertices (GFA0AdderStr (x,y,z)) misses InputVertices (GFA0AdderStr (x,y,z)) by XBOOLE_1:79; then A8: ( Following (s2,2) = (Following (t,2)) | the carrier of (GFA0CarryStr (x,y,z)) & Following (s2,3) = (Following (t,3)) | the carrier of (GFA0CarryStr (x,y,z)) ) by A3, FACIRC_1:31; A9: the carrier of (BitGFA0Str (x,y,z)) = the carrier of (GFA0AdderStr (x,y,z)) \/ the carrier of (GFA0CarryStr (x,y,z)) by CIRCCOMB:def_2; A10: ( dom (Following (s1,2)) = the carrier of (GFA0AdderStr (x,y,z)) & dom (Following (s2,2)) = the carrier of (GFA0CarryStr (x,y,z)) ) by CIRCUIT1:3; A11: now__::_thesis:_for_a_being_set_st_a_in_the_carrier_of_(BitGFA0Str_(x,y,z))_holds_ (Following_(s,2))_._a_=_(Following_(Following_(s,2)))_._a let a be set ; ::_thesis: ( a in the carrier of (BitGFA0Str (x,y,z)) implies (Following (s,2)) . a = (Following (Following (s,2))) . a ) assume a in the carrier of (BitGFA0Str (x,y,z)) ; ::_thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a then ( a in the carrier of (GFA0AdderStr (x,y,z)) or a in the carrier of (GFA0CarryStr (x,y,z)) ) by A9, XBOOLE_0:def_3; then ( ( (Following (s,2)) . a = (Following (s1,2)) . a & (Following (s,3)) . a = (Following (s1,3)) . a ) or ( (Following (s,2)) . a = (Following (s2,2)) . a & (Following (s,3)) . a = (Following (s2,3)) . a ) ) by A7, A8, A4, A5, A10, FUNCT_1:47; hence (Following (s,2)) . a = (Following (Following (s,2))) . a by A4, A5, FACIRC_1:12; ::_thesis: verum end; ( Following (s,(2 + 1)) = Following (Following (s,2)) & dom (Following (s,2)) = the carrier of (BitGFA0Str (x,y,z)) ) by CIRCUIT1:3, FACIRC_1:12; hence Following (s,2) = Following (Following (s,2)) by A6, A11, FUNCT_1:2; :: according to CIRCUIT2:def_6 ::_thesis: verum end; begin definition let x, y, z be set ; func GFA1CarryIStr (x,y,z) -> non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: GFACIRC1:def 17 ((1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a))) +* (1GateCircStr (<*z,x*>,and2)); coherence ((1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a))) +* (1GateCircStr (<*z,x*>,and2)) is non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign ; end; :: deftheorem defines GFA1CarryIStr GFACIRC1:def_17_:_ for x, y, z being set holds GFA1CarryIStr (x,y,z) = ((1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a))) +* (1GateCircStr (<*z,x*>,and2)); definition let x, y, z be set ; func GFA1CarryICirc (x,y,z) -> strict gate`2=den Boolean Circuit of GFA1CarryIStr (x,y,z) equals :: GFACIRC1:def 18 ((1GateCircuit (x,y,and2c)) +* (1GateCircuit (y,z,and2a))) +* (1GateCircuit (z,x,and2)); coherence ((1GateCircuit (x,y,and2c)) +* (1GateCircuit (y,z,and2a))) +* (1GateCircuit (z,x,and2)) is strict gate`2=den Boolean Circuit of GFA1CarryIStr (x,y,z) ; end; :: deftheorem defines GFA1CarryICirc GFACIRC1:def_18_:_ for x, y, z being set holds GFA1CarryICirc (x,y,z) = ((1GateCircuit (x,y,and2c)) +* (1GateCircuit (y,z,and2a))) +* (1GateCircuit (z,x,and2)); definition let x, y, z be set ; func GFA1CarryStr (x,y,z) -> non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: GFACIRC1:def 19 (GFA1CarryIStr (x,y,z)) +* (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)); coherence (GFA1CarryIStr (x,y,z)) +* (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)) is non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign ; end; :: deftheorem defines GFA1CarryStr GFACIRC1:def_19_:_ for x, y, z being set holds GFA1CarryStr (x,y,z) = (GFA1CarryIStr (x,y,z)) +* (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)); definition let x, y, z be set ; func GFA1CarryCirc (x,y,z) -> strict gate`2=den Boolean Circuit of GFA1CarryStr (x,y,z) equals :: GFACIRC1:def 20 (GFA1CarryICirc (x,y,z)) +* (1GateCircuit ([<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2],or3)); coherence (GFA1CarryICirc (x,y,z)) +* (1GateCircuit ([<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2],or3)) is strict gate`2=den Boolean Circuit of GFA1CarryStr (x,y,z) ; end; :: deftheorem defines GFA1CarryCirc GFACIRC1:def_20_:_ for x, y, z being set holds GFA1CarryCirc (x,y,z) = (GFA1CarryICirc (x,y,z)) +* (1GateCircuit ([<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2],or3)); definition let x, y, z be set ; func GFA1CarryOutput (x,y,z) -> Element of InnerVertices (GFA1CarryStr (x,y,z)) equals :: GFACIRC1:def 21 [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3]; coherence [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3] is Element of InnerVertices (GFA1CarryStr (x,y,z)) proof [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3] in InnerVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)) by FACIRC_1:47; hence [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3] is Element of InnerVertices (GFA1CarryStr (x,y,z)) by FACIRC_1:21; ::_thesis: verum end; end; :: deftheorem defines GFA1CarryOutput GFACIRC1:def_21_:_ for x, y, z being set holds GFA1CarryOutput (x,y,z) = [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3]; theorem Th41: :: GFACIRC1:41 for x, y, z being set holds InnerVertices (GFA1CarryIStr (x,y,z)) = {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} proof let x, y, z be set ; ::_thesis: InnerVertices (GFA1CarryIStr (x,y,z)) = {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; set xy = [<*x,y*>,and2c]; set yz = [<*y,z*>,and2a]; set zx = [<*z,x*>,and2]; set Cxy = 1GateCircStr (<*x,y*>,and2c); set Cyz = 1GateCircStr (<*y,z*>,and2a); set Czx = 1GateCircStr (<*z,x*>,and2); A1: 1GateCircStr (<*x,y*>,and2c) tolerates 1GateCircStr (<*y,z*>,and2a) by CIRCCOMB:47; (1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a)) tolerates 1GateCircStr (<*z,x*>,and2) by CIRCCOMB:47; then InnerVertices (GFA1CarryIStr (x,y,z)) = (InnerVertices ((1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2))) by CIRCCOMB:11 .= ((InnerVertices (1GateCircStr (<*x,y*>,and2c))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2a)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2))) by A1, CIRCCOMB:11 .= ({[<*x,y*>,and2c]} \/ (InnerVertices (1GateCircStr (<*y,z*>,and2a)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2))) by CIRCCOMB:42 .= ({[<*x,y*>,and2c]} \/ {[<*y,z*>,and2a]}) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2))) by CIRCCOMB:42 .= ({[<*x,y*>,and2c]} \/ {[<*y,z*>,and2a]}) \/ {[<*z,x*>,and2]} by CIRCCOMB:42 .= {[<*x,y*>,and2c],[<*y,z*>,and2a]} \/ {[<*z,x*>,and2]} by ENUMSET1:1 .= {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} by ENUMSET1:3 ; hence InnerVertices (GFA1CarryIStr (x,y,z)) = {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} ; ::_thesis: verum end; theorem Th42: :: GFACIRC1:42 for x, y, z being set holds InnerVertices (GFA1CarryStr (x,y,z)) = {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} \/ {(GFA1CarryOutput (x,y,z))} proof let x, y, z be set ; ::_thesis: InnerVertices (GFA1CarryStr (x,y,z)) = {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} \/ {(GFA1CarryOutput (x,y,z))} set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; set f4 = or3 ; set xy = [<*x,y*>,and2c]; set yz = [<*y,z*>,and2a]; set zx = [<*z,x*>,and2]; set Cxy = 1GateCircStr (<*x,y*>,and2c); set Cyz = 1GateCircStr (<*y,z*>,and2a); set Czx = 1GateCircStr (<*z,x*>,and2); set Cxyz = 1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3); A1: 1GateCircStr (<*x,y*>,and2c) tolerates ((1GateCircStr (<*y,z*>,and2a)) +* (1GateCircStr (<*z,x*>,and2))) +* (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)) by CIRCCOMB:47; 1GateCircStr (<*y,z*>,and2a) tolerates (1GateCircStr (<*z,x*>,and2)) +* (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)) by CIRCCOMB:47; then A2: InnerVertices ((1GateCircStr (<*y,z*>,and2a)) +* ((1GateCircStr (<*z,x*>,and2)) +* (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)))) = (InnerVertices (1GateCircStr (<*y,z*>,and2a))) \/ (InnerVertices ((1GateCircStr (<*z,x*>,and2)) +* (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)))) by CIRCCOMB:11; 1GateCircStr (<*z,x*>,and2) tolerates 1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3) by CIRCCOMB:47; then A3: InnerVertices ((1GateCircStr (<*z,x*>,and2)) +* (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3))) = (InnerVertices (1GateCircStr (<*z,x*>,and2))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3))) by CIRCCOMB:11; thus InnerVertices (GFA1CarryStr (x,y,z)) = InnerVertices (((1GateCircStr (<*x,y*>,and2c)) +* ((1GateCircStr (<*y,z*>,and2a)) +* (1GateCircStr (<*z,x*>,and2)))) +* (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3))) by CIRCCOMB:6 .= InnerVertices ((1GateCircStr (<*x,y*>,and2c)) +* (((1GateCircStr (<*y,z*>,and2a)) +* (1GateCircStr (<*z,x*>,and2))) +* (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)))) by CIRCCOMB:6 .= (InnerVertices (1GateCircStr (<*x,y*>,and2c))) \/ (InnerVertices (((1GateCircStr (<*y,z*>,and2a)) +* (1GateCircStr (<*z,x*>,and2))) +* (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)))) by A1, CIRCCOMB:11 .= (InnerVertices (1GateCircStr (<*x,y*>,and2c))) \/ (InnerVertices ((1GateCircStr (<*y,z*>,and2a)) +* ((1GateCircStr (<*z,x*>,and2)) +* (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3))))) by CIRCCOMB:6 .= ((InnerVertices (1GateCircStr (<*x,y*>,and2c))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2a)))) \/ ((InnerVertices (1GateCircStr (<*z,x*>,and2))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)))) by A2, A3, XBOOLE_1:4 .= (((InnerVertices (1GateCircStr (<*x,y*>,and2c))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2a)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2)))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3))) by XBOOLE_1:4 .= (({[<*x,y*>,and2c]} \/ (InnerVertices (1GateCircStr (<*y,z*>,and2a)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2)))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3))) by CIRCCOMB:42 .= (({[<*x,y*>,and2c]} \/ {[<*y,z*>,and2a]}) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2)))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3))) by CIRCCOMB:42 .= (({[<*x,y*>,and2c]} \/ {[<*y,z*>,and2a]}) \/ {[<*z,x*>,and2]}) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3))) by CIRCCOMB:42 .= ({[<*x,y*>,and2c],[<*y,z*>,and2a]} \/ {[<*z,x*>,and2]}) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3))) by ENUMSET1:1 .= {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3))) by ENUMSET1:3 .= {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} \/ {(GFA1CarryOutput (x,y,z))} by CIRCCOMB:42 ; ::_thesis: verum end; theorem Th43: :: GFACIRC1:43 for x, y, z being set holds InnerVertices (GFA1CarryStr (x,y,z)) is Relation proof let x, y, z be set ; ::_thesis: InnerVertices (GFA1CarryStr (x,y,z)) is Relation set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; set f4 = or3 ; set xy = [<*x,y*>,and2c]; set yz = [<*y,z*>,and2a]; set zx = [<*z,x*>,and2]; set Cxy = 1GateCircStr (<*x,y*>,and2c); set Cyz = 1GateCircStr (<*y,z*>,and2a); set Czx = 1GateCircStr (<*z,x*>,and2); set Cxyz = 1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3); ( InnerVertices (1GateCircStr (<*x,y*>,and2c)) is Relation & InnerVertices (1GateCircStr (<*y,z*>,and2a)) is Relation ) by FACIRC_1:38; then ( InnerVertices (1GateCircStr (<*z,x*>,and2)) is Relation & InnerVertices ((1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a))) is Relation ) by FACIRC_1:3, FACIRC_1:38; then ( InnerVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)) is Relation & InnerVertices (GFA1CarryIStr (x,y,z)) is Relation ) by FACIRC_1:3, FACIRC_1:38; hence InnerVertices (GFA1CarryStr (x,y,z)) is Relation by FACIRC_1:3; ::_thesis: verum end; theorem Th44: :: GFACIRC1:44 for x, y, z being set st x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] holds InputVertices (GFA1CarryIStr (x,y,z)) = {x,y,z} proof let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] implies InputVertices (GFA1CarryIStr (x,y,z)) = {x,y,z} ) set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; set xy = [<*x,y*>,and2c]; set yz = [<*y,z*>,and2a]; set zx = [<*z,x*>,and2]; set Cxy = 1GateCircStr (<*x,y*>,and2c); set Cyz = 1GateCircStr (<*y,z*>,and2a); set Czx = 1GateCircStr (<*z,x*>,and2); assume that A1: x <> [<*y,z*>,and2a] and A2: ( y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] ) ; ::_thesis: InputVertices (GFA1CarryIStr (x,y,z)) = {x,y,z} A3: not [<*x,y*>,and2c] in {y,z} by A1, A2, Lm1; A4: not [<*z,x*>,and2] in {x,y,z} by A1, A2, Lm1; A5: y <> [<*y,z*>,and2a] by FACIRC_2:2; A6: ( not z in {[<*x,y*>,and2c],[<*y,z*>,and2a]} & not x in {[<*x,y*>,and2c],[<*y,z*>,and2a]} ) by A1, A2, Lm1; A7: 1GateCircStr (<*x,y*>,and2c) tolerates 1GateCircStr (<*y,z*>,and2a) by CIRCCOMB:47; InputVertices (GFA1CarryIStr (x,y,z)) = ((InputVertices ((1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a)))) \ (InnerVertices (1GateCircStr (<*z,x*>,and2)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ (InnerVertices ((1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a))))) by CIRCCMB2:5, CIRCCOMB:47 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2c))) \ (InnerVertices (1GateCircStr (<*y,z*>,and2a)))) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2a))) \ (InnerVertices (1GateCircStr (<*x,y*>,and2c))))) \ (InnerVertices (1GateCircStr (<*z,x*>,and2)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ (InnerVertices ((1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a))))) by CIRCCMB2:5, CIRCCOMB:47 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2c))) \ (InnerVertices (1GateCircStr (<*y,z*>,and2a)))) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2a))) \ (InnerVertices (1GateCircStr (<*x,y*>,and2c))))) \ (InnerVertices (1GateCircStr (<*z,x*>,and2)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ ((InnerVertices (1GateCircStr (<*x,y*>,and2c))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2a))))) by A7, CIRCCOMB:11 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2c))) \ {[<*y,z*>,and2a]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2a))) \ (InnerVertices (1GateCircStr (<*x,y*>,and2c))))) \ (InnerVertices (1GateCircStr (<*z,x*>,and2)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ ((InnerVertices (1GateCircStr (<*x,y*>,and2c))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2a))))) by CIRCCOMB:42 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2c))) \ {[<*y,z*>,and2a]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2a))) \ {[<*x,y*>,and2c]})) \ (InnerVertices (1GateCircStr (<*z,x*>,and2)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ ((InnerVertices (1GateCircStr (<*x,y*>,and2c))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2a))))) by CIRCCOMB:42 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2c))) \ {[<*y,z*>,and2a]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2a))) \ {[<*x,y*>,and2c]})) \ {[<*z,x*>,and2]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ ((InnerVertices (1GateCircStr (<*x,y*>,and2c))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2a))))) by CIRCCOMB:42 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2c))) \ {[<*y,z*>,and2a]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2a))) \ {[<*x,y*>,and2c]})) \ {[<*z,x*>,and2]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ ({[<*x,y*>,and2c]} \/ (InnerVertices (1GateCircStr (<*y,z*>,and2a))))) by CIRCCOMB:42 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2c))) \ {[<*y,z*>,and2a]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2a))) \ {[<*x,y*>,and2c]})) \ {[<*z,x*>,and2]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ ({[<*x,y*>,and2c]} \/ {[<*y,z*>,and2a]})) by CIRCCOMB:42 .= ((({x,y} \ {[<*y,z*>,and2a]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2a))) \ {[<*x,y*>,and2c]})) \ {[<*z,x*>,and2]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ ({[<*x,y*>,and2c]} \/ {[<*y,z*>,and2a]})) by FACIRC_1:40 .= ((({x,y} \ {[<*y,z*>,and2a]}) \/ ({y,z} \ {[<*x,y*>,and2c]})) \ {[<*z,x*>,and2]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2))) \ ({[<*x,y*>,and2c]} \/ {[<*y,z*>,and2a]})) by FACIRC_1:40 .= ((({x,y} \ {[<*y,z*>,and2a]}) \/ ({y,z} \ {[<*x,y*>,and2c]})) \ {[<*z,x*>,and2]}) \/ ({z,x} \ ({[<*x,y*>,and2c]} \/ {[<*y,z*>,and2a]})) by FACIRC_1:40 .= ((({x,y} \ {[<*y,z*>,and2a]}) \/ ({y,z} \ {[<*x,y*>,and2c]})) \ {[<*z,x*>,and2]}) \/ ({z,x} \ {[<*x,y*>,and2c],[<*y,z*>,and2a]}) by ENUMSET1:1 .= (({x,y} \/ ({y,z} \ {[<*x,y*>,and2c]})) \ {[<*z,x*>,and2]}) \/ ({z,x} \ {[<*x,y*>,and2c],[<*y,z*>,and2a]}) by A1, A5, FACIRC_2:1 .= (({x,y} \/ {y,z}) \ {[<*z,x*>,and2]}) \/ ({z,x} \ {[<*x,y*>,and2c],[<*y,z*>,and2a]}) by A3, ZFMISC_1:57 .= (({x,y} \/ {y,z}) \ {[<*z,x*>,and2]}) \/ {z,x} by A6, ZFMISC_1:63 .= ({x,y,y,z} \ {[<*z,x*>,and2]}) \/ {z,x} by ENUMSET1:5 .= ({y,y,x,z} \ {[<*z,x*>,and2]}) \/ {z,x} by ENUMSET1:67 .= ({y,x,z} \ {[<*z,x*>,and2]}) \/ {z,x} by ENUMSET1:31 .= ({x,y,z} \ {[<*z,x*>,and2]}) \/ {z,x} by ENUMSET1:58 .= {x,y,z} \/ {z,x} by A4, ZFMISC_1:57 .= {x,y,z,z,x} by ENUMSET1:9 .= {x,y,z,z} \/ {x} by ENUMSET1:10 .= {z,z,x,y} \/ {x} by ENUMSET1:73 .= {z,x,y} \/ {x} by ENUMSET1:31 .= {z,x,y,x} by ENUMSET1:6 .= {x,x,y,z} by ENUMSET1:70 .= {x,y,z} by ENUMSET1:31 ; hence InputVertices (GFA1CarryIStr (x,y,z)) = {x,y,z} ; ::_thesis: verum end; theorem Th45: :: GFACIRC1:45 for x, y, z being set st x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] holds InputVertices (GFA1CarryStr (x,y,z)) = {x,y,z} proof let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] implies InputVertices (GFA1CarryStr (x,y,z)) = {x,y,z} ) set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; set f4 = or3 ; set xy = [<*x,y*>,and2c]; set yz = [<*y,z*>,and2a]; set zx = [<*z,x*>,and2]; set xyz = [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3]; set S = 1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3); set MI = GFA1CarryIStr (x,y,z); A1: InputVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)) = rng <*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*> by CIRCCOMB:42 .= {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} by FINSEQ_2:128 ; assume A2: ( x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] ) ; ::_thesis: InputVertices (GFA1CarryStr (x,y,z)) = {x,y,z} A3: ( InnerVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)) = {[<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3]} & {x,y,z} \ {[<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3]} = {x,y,z} ) by Lm2, CIRCCOMB:42; A4: {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} \ {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} = {} by XBOOLE_1:37; thus InputVertices (GFA1CarryStr (x,y,z)) = ((InputVertices (GFA1CarryIStr (x,y,z))) \ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)))) \/ ((InputVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3))) \ (InnerVertices (GFA1CarryIStr (x,y,z)))) by CIRCCMB2:5, CIRCCOMB:47 .= {x,y,z} \/ ({[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} \ (InnerVertices (GFA1CarryIStr (x,y,z)))) by A1, A2, A3, Th44 .= {x,y,z} \/ {} by A4, Th41 .= {x,y,z} ; ::_thesis: verum end; theorem :: GFACIRC1:46 for x, y, z being non pair set holds InputVertices (GFA1CarryStr (x,y,z)) is without_pairs proof let x, y, z be non pair set ; ::_thesis: InputVertices (GFA1CarryStr (x,y,z)) is without_pairs set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; set f4 = or3 ; set xy = [<*x,y*>,and2c]; set yz = [<*y,z*>,and2a]; set zx = [<*z,x*>,and2]; set Cxy = 1GateCircStr (<*x,y*>,and2c); set Cyz = 1GateCircStr (<*y,z*>,and2a); set Czx = 1GateCircStr (<*z,x*>,and2); set S = 1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3); set M = GFA1CarryStr (x,y,z); set MI = GFA1CarryIStr (x,y,z); given xx being pair set such that A1: xx in InputVertices (GFA1CarryStr (x,y,z)) ; :: according to FACIRC_1:def_2 ::_thesis: contradiction A2: 1GateCircStr (<*x,y*>,and2c) tolerates 1GateCircStr (<*y,z*>,and2a) by CIRCCOMB:47; A3: ( InnerVertices (1GateCircStr (<*z,x*>,and2)) = {[<*z,x*>,and2]} & (1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a)) tolerates 1GateCircStr (<*z,x*>,and2) ) by CIRCCOMB:42, CIRCCOMB:47; ( InnerVertices (1GateCircStr (<*x,y*>,and2c)) = {[<*x,y*>,and2c]} & InnerVertices (1GateCircStr (<*y,z*>,and2a)) = {[<*y,z*>,and2a]} ) by CIRCCOMB:42; then InnerVertices ((1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a))) = {[<*x,y*>,and2c]} \/ {[<*y,z*>,and2a]} by A2, CIRCCOMB:11; then A4: InnerVertices (GFA1CarryIStr (x,y,z)) = ({[<*x,y*>,and2c]} \/ {[<*y,z*>,and2a]}) \/ {[<*z,x*>,and2]} by A3, CIRCCOMB:11 .= {[<*x,y*>,and2c],[<*y,z*>,and2a]} \/ {[<*z,x*>,and2]} by ENUMSET1:1 .= {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} by ENUMSET1:3 ; InputVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)) = {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} by FACIRC_1:42; then A5: (InputVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3))) \ (InnerVertices (GFA1CarryIStr (x,y,z))) = {} by A4, XBOOLE_1:37; ( InputVertices (1GateCircStr (<*x,y*>,and2c)) is without_pairs & InputVertices (1GateCircStr (<*y,z*>,and2a)) is without_pairs ) by FACIRC_1:41; then ( InputVertices (1GateCircStr (<*z,x*>,and2)) is without_pairs & InputVertices ((1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a))) is without_pairs ) by FACIRC_1:9, FACIRC_1:41; then A6: InputVertices (GFA1CarryIStr (x,y,z)) is without_pairs by FACIRC_1:9; InnerVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)) is Relation by FACIRC_1:38; then InputVertices (GFA1CarryStr (x,y,z)) = (InputVertices (GFA1CarryIStr (x,y,z))) \/ ((InputVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3))) \ (InnerVertices (GFA1CarryIStr (x,y,z)))) by A6, FACIRC_1:6; hence contradiction by A6, A1, A5, FACIRC_1:def_2; ::_thesis: verum end; theorem Th47: :: GFACIRC1:47 for x, y, z being set holds ( x in the carrier of (GFA1CarryStr (x,y,z)) & y in the carrier of (GFA1CarryStr (x,y,z)) & z in the carrier of (GFA1CarryStr (x,y,z)) & [<*x,y*>,and2c] in the carrier of (GFA1CarryStr (x,y,z)) & [<*y,z*>,and2a] in the carrier of (GFA1CarryStr (x,y,z)) & [<*z,x*>,and2] in the carrier of (GFA1CarryStr (x,y,z)) & [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3] in the carrier of (GFA1CarryStr (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( x in the carrier of (GFA1CarryStr (x,y,z)) & y in the carrier of (GFA1CarryStr (x,y,z)) & z in the carrier of (GFA1CarryStr (x,y,z)) & [<*x,y*>,and2c] in the carrier of (GFA1CarryStr (x,y,z)) & [<*y,z*>,and2a] in the carrier of (GFA1CarryStr (x,y,z)) & [<*z,x*>,and2] in the carrier of (GFA1CarryStr (x,y,z)) & [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3] in the carrier of (GFA1CarryStr (x,y,z)) ) set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; set f4 = or3 ; set xy = [<*x,y*>,and2c]; set yz = [<*y,z*>,and2a]; set zx = [<*z,x*>,and2]; set xyz = [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3]; set Cxy = 1GateCircStr (<*x,y*>,and2c); set Cyz = 1GateCircStr (<*y,z*>,and2a); set Czx = 1GateCircStr (<*z,x*>,and2); set Cxyz = 1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3); set p = <*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>; z in the carrier of (1GateCircStr (<*z,x*>,and2)) by FACIRC_1:43; then A1: z in the carrier of (GFA1CarryIStr (x,y,z)) by FACIRC_1:20; [<*z,x*>,and2] in the carrier of (1GateCircStr (<*z,x*>,and2)) by FACIRC_1:43; then A2: [<*z,x*>,and2] in the carrier of (GFA1CarryIStr (x,y,z)) by FACIRC_1:20; y in the carrier of (1GateCircStr (<*x,y*>,and2c)) by FACIRC_1:43; then y in the carrier of ((1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a))) by FACIRC_1:20; then A3: y in the carrier of (GFA1CarryIStr (x,y,z)) by FACIRC_1:20; ( the carrier of (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)) = (rng <*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>) \/ {[<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3]} & [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3] in {[<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3]} ) by CIRCCOMB:def_6, TARSKI:def_1; then A4: [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3] in the carrier of (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)) by XBOOLE_0:def_3; [<*y,z*>,and2a] in the carrier of (1GateCircStr (<*y,z*>,and2a)) by FACIRC_1:43; then [<*y,z*>,and2a] in the carrier of ((1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a))) by FACIRC_1:20; then A5: [<*y,z*>,and2a] in the carrier of (GFA1CarryIStr (x,y,z)) by FACIRC_1:20; [<*x,y*>,and2c] in the carrier of (1GateCircStr (<*x,y*>,and2c)) by FACIRC_1:43; then [<*x,y*>,and2c] in the carrier of ((1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a))) by FACIRC_1:20; then A6: [<*x,y*>,and2c] in the carrier of (GFA1CarryIStr (x,y,z)) by FACIRC_1:20; x in the carrier of (1GateCircStr (<*z,x*>,and2)) by FACIRC_1:43; then x in the carrier of (GFA1CarryIStr (x,y,z)) by FACIRC_1:20; hence ( x in the carrier of (GFA1CarryStr (x,y,z)) & y in the carrier of (GFA1CarryStr (x,y,z)) & z in the carrier of (GFA1CarryStr (x,y,z)) & [<*x,y*>,and2c] in the carrier of (GFA1CarryStr (x,y,z)) & [<*y,z*>,and2a] in the carrier of (GFA1CarryStr (x,y,z)) & [<*z,x*>,and2] in the carrier of (GFA1CarryStr (x,y,z)) & [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3] in the carrier of (GFA1CarryStr (x,y,z)) ) by A3, A1, A6, A5, A2, A4, FACIRC_1:20; ::_thesis: verum end; theorem Th48: :: GFACIRC1:48 for x, y, z being set holds ( [<*x,y*>,and2c] in InnerVertices (GFA1CarryStr (x,y,z)) & [<*y,z*>,and2a] in InnerVertices (GFA1CarryStr (x,y,z)) & [<*z,x*>,and2] in InnerVertices (GFA1CarryStr (x,y,z)) & GFA1CarryOutput (x,y,z) in InnerVertices (GFA1CarryStr (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( [<*x,y*>,and2c] in InnerVertices (GFA1CarryStr (x,y,z)) & [<*y,z*>,and2a] in InnerVertices (GFA1CarryStr (x,y,z)) & [<*z,x*>,and2] in InnerVertices (GFA1CarryStr (x,y,z)) & GFA1CarryOutput (x,y,z) in InnerVertices (GFA1CarryStr (x,y,z)) ) set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; set xy = [<*x,y*>,and2c]; set yz = [<*y,z*>,and2a]; set zx = [<*z,x*>,and2]; InnerVertices (GFA1CarryStr (x,y,z)) = {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} \/ {(GFA1CarryOutput (x,y,z))} by Th42 .= {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2],(GFA1CarryOutput (x,y,z))} by ENUMSET1:6 ; hence ( [<*x,y*>,and2c] in InnerVertices (GFA1CarryStr (x,y,z)) & [<*y,z*>,and2a] in InnerVertices (GFA1CarryStr (x,y,z)) & [<*z,x*>,and2] in InnerVertices (GFA1CarryStr (x,y,z)) & GFA1CarryOutput (x,y,z) in InnerVertices (GFA1CarryStr (x,y,z)) ) by ENUMSET1:def_2; ::_thesis: verum end; theorem Th49: :: GFACIRC1:49 for x, y, z being set st x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] holds ( x in InputVertices (GFA1CarryStr (x,y,z)) & y in InputVertices (GFA1CarryStr (x,y,z)) & z in InputVertices (GFA1CarryStr (x,y,z)) ) proof set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] implies ( x in InputVertices (GFA1CarryStr (x,y,z)) & y in InputVertices (GFA1CarryStr (x,y,z)) & z in InputVertices (GFA1CarryStr (x,y,z)) ) ) assume ( x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] ) ; ::_thesis: ( x in InputVertices (GFA1CarryStr (x,y,z)) & y in InputVertices (GFA1CarryStr (x,y,z)) & z in InputVertices (GFA1CarryStr (x,y,z)) ) then InputVertices (GFA1CarryStr (x,y,z)) = {x,y,z} by Th45; hence ( x in InputVertices (GFA1CarryStr (x,y,z)) & y in InputVertices (GFA1CarryStr (x,y,z)) & z in InputVertices (GFA1CarryStr (x,y,z)) ) by ENUMSET1:def_1; ::_thesis: verum end; theorem Th50: :: GFACIRC1:50 for x, y, z being non pair set holds InputVertices (GFA1CarryStr (x,y,z)) = {x,y,z} proof let x, y, z be non pair set ; ::_thesis: InputVertices (GFA1CarryStr (x,y,z)) = {x,y,z} set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; set f4 = or3 ; set xy = [<*x,y*>,and2c]; set yz = [<*y,z*>,and2a]; set zx = [<*z,x*>,and2]; set Cxy = 1GateCircStr (<*x,y*>,and2c); set Cyz = 1GateCircStr (<*y,z*>,and2a); set Czx = 1GateCircStr (<*z,x*>,and2); set M = GFA1CarryStr (x,y,z); set MI = GFA1CarryIStr (x,y,z); set S = 1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3); A1: ( InputVertices (1GateCircStr (<*x,y*>,and2c)) = {x,y} & InputVertices (1GateCircStr (<*y,z*>,and2a)) = {y,z} ) by FACIRC_1:40; A2: InputVertices (1GateCircStr (<*z,x*>,and2)) = {z,x} by FACIRC_1:40; A3: InputVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)) = {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} by FACIRC_1:42; A4: InnerVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3)) is Relation by FACIRC_1:38; A5: ( InnerVertices (1GateCircStr (<*x,y*>,and2c)) = {[<*x,y*>,and2c]} & InnerVertices (1GateCircStr (<*y,z*>,and2a)) = {[<*y,z*>,and2a]} ) by CIRCCOMB:42; 1GateCircStr (<*x,y*>,and2c) tolerates 1GateCircStr (<*y,z*>,and2a) by CIRCCOMB:47; then A6: ( InnerVertices (1GateCircStr (<*z,x*>,and2)) = {[<*z,x*>,and2]} & InnerVertices ((1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a))) = {[<*x,y*>,and2c]} \/ {[<*y,z*>,and2a]} ) by A5, CIRCCOMB:11, CIRCCOMB:42; (1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a)) tolerates 1GateCircStr (<*z,x*>,and2) by CIRCCOMB:47; then InnerVertices (GFA1CarryIStr (x,y,z)) = ({[<*x,y*>,and2c]} \/ {[<*y,z*>,and2a]}) \/ {[<*z,x*>,and2]} by A6, CIRCCOMB:11 .= {[<*x,y*>,and2c],[<*y,z*>,and2a]} \/ {[<*z,x*>,and2]} by ENUMSET1:1 .= {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} by ENUMSET1:3 ; then A7: (InputVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3))) \ (InnerVertices (GFA1CarryIStr (x,y,z))) = {} by A3, XBOOLE_1:37; A8: ( InputVertices (1GateCircStr (<*x,y*>,and2c)) is without_pairs & InputVertices (1GateCircStr (<*y,z*>,and2a)) is without_pairs ) by FACIRC_1:41; then A9: ( InputVertices (1GateCircStr (<*z,x*>,and2)) is without_pairs & InputVertices ((1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a))) is without_pairs ) by FACIRC_1:9, FACIRC_1:41; then InputVertices (GFA1CarryIStr (x,y,z)) is without_pairs by FACIRC_1:9; then InputVertices (GFA1CarryStr (x,y,z)) = (InputVertices (GFA1CarryIStr (x,y,z))) \/ ((InputVertices (1GateCircStr (<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3))) \ (InnerVertices (GFA1CarryIStr (x,y,z)))) by A4, FACIRC_1:6; hence InputVertices (GFA1CarryStr (x,y,z)) = (InputVertices ((1GateCircStr (<*x,y*>,and2c)) +* (1GateCircStr (<*y,z*>,and2a)))) \/ (InputVertices (1GateCircStr (<*z,x*>,and2))) by A9, A6, A7, FACIRC_1:7 .= ((InputVertices (1GateCircStr (<*x,y*>,and2c))) \/ (InputVertices (1GateCircStr (<*y,z*>,and2a)))) \/ (InputVertices (1GateCircStr (<*z,x*>,and2))) by A8, A5, FACIRC_1:7 .= {x,y,y,z} \/ {z,x} by A1, A2, ENUMSET1:5 .= {y,y,x,z} \/ {z,x} by ENUMSET1:67 .= {y,x,z} \/ {z,x} by ENUMSET1:31 .= {x,y,z} \/ {z,x} by ENUMSET1:58 .= {x,y,z} \/ ({z} \/ {x}) by ENUMSET1:1 .= ({x,y,z} \/ {z}) \/ {x} by XBOOLE_1:4 .= ({z,x,y} \/ {z}) \/ {x} by ENUMSET1:59 .= {z,z,x,y} \/ {x} by ENUMSET1:4 .= {z,x,y} \/ {x} by ENUMSET1:31 .= {x,y,z} \/ {x} by ENUMSET1:59 .= {x,x,y,z} by ENUMSET1:4 .= {x,y,z} by ENUMSET1:31 ; ::_thesis: verum end; theorem Th51: :: GFACIRC1:51 for x, y, z being set for s being State of (GFA1CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,and2c] = a1 '&' ('not' a2) & (Following s) . [<*y,z*>,and2a] = ('not' a2) '&' a3 & (Following s) . [<*z,x*>,and2] = a3 '&' a1 ) proof let x, y, z be set ; ::_thesis: for s being State of (GFA1CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,and2c] = a1 '&' ('not' a2) & (Following s) . [<*y,z*>,and2a] = ('not' a2) '&' a3 & (Following s) . [<*z,x*>,and2] = a3 '&' a1 ) set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; let s be State of (GFA1CarryCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,and2c] = a1 '&' ('not' a2) & (Following s) . [<*y,z*>,and2a] = ('not' a2) '&' a3 & (Following s) . [<*z,x*>,and2] = a3 '&' a1 ) set xy = [<*x,y*>,and2c]; set yz = [<*y,z*>,and2a]; set zx = [<*z,x*>,and2]; let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies ( (Following s) . [<*x,y*>,and2c] = a1 '&' ('not' a2) & (Following s) . [<*y,z*>,and2a] = ('not' a2) '&' a3 & (Following s) . [<*z,x*>,and2] = a3 '&' a1 ) ) assume that A1: a1 = s . x and A2: a2 = s . y and A3: a3 = s . z ; ::_thesis: ( (Following s) . [<*x,y*>,and2c] = a1 '&' ('not' a2) & (Following s) . [<*y,z*>,and2a] = ('not' a2) '&' a3 & (Following s) . [<*z,x*>,and2] = a3 '&' a1 ) set S = GFA1CarryStr (x,y,z); A4: InnerVertices (GFA1CarryStr (x,y,z)) = the carrier' of (GFA1CarryStr (x,y,z)) by FACIRC_1:37; A5: y in the carrier of (GFA1CarryStr (x,y,z)) by Th47; A6: x in the carrier of (GFA1CarryStr (x,y,z)) by Th47; A7: dom s = the carrier of (GFA1CarryStr (x,y,z)) by CIRCUIT1:3; [<*x,y*>,and2c] in InnerVertices (GFA1CarryStr (x,y,z)) by Th48; hence (Following s) . [<*x,y*>,and2c] = and2c . (s * <*x,y*>) by A4, FACIRC_1:35 .= and2c . <*a1,a2*> by A1, A2, A7, A6, A5, FINSEQ_2:125 .= a1 '&' ('not' a2) by Def3 ; ::_thesis: ( (Following s) . [<*y,z*>,and2a] = ('not' a2) '&' a3 & (Following s) . [<*z,x*>,and2] = a3 '&' a1 ) A8: z in the carrier of (GFA1CarryStr (x,y,z)) by Th47; [<*y,z*>,and2a] in InnerVertices (GFA1CarryStr (x,y,z)) by Th48; hence (Following s) . [<*y,z*>,and2a] = and2a . (s * <*y,z*>) by A4, FACIRC_1:35 .= and2a . <*a2,a3*> by A2, A3, A7, A5, A8, FINSEQ_2:125 .= ('not' a2) '&' a3 by TWOSCOMP:def_2 ; ::_thesis: (Following s) . [<*z,x*>,and2] = a3 '&' a1 [<*z,x*>,and2] in InnerVertices (GFA1CarryStr (x,y,z)) by Th48; hence (Following s) . [<*z,x*>,and2] = and2 . (s * <*z,x*>) by A4, FACIRC_1:35 .= and2 . <*a3,a1*> by A1, A3, A7, A6, A8, FINSEQ_2:125 .= a3 '&' a1 by TWOSCOMP:def_1 ; ::_thesis: verum end; theorem Th52: :: GFACIRC1:52 for x, y, z being set for s being State of (GFA1CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . [<*x,y*>,and2c] & a2 = s . [<*y,z*>,and2a] & a3 = s . [<*z,x*>,and2] holds (Following s) . (GFA1CarryOutput (x,y,z)) = (a1 'or' a2) 'or' a3 proof let x, y, z be set ; ::_thesis: for s being State of (GFA1CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . [<*x,y*>,and2c] & a2 = s . [<*y,z*>,and2a] & a3 = s . [<*z,x*>,and2] holds (Following s) . (GFA1CarryOutput (x,y,z)) = (a1 'or' a2) 'or' a3 set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; set f4 = or3 ; let s be State of (GFA1CarryCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . [<*x,y*>,and2c] & a2 = s . [<*y,z*>,and2a] & a3 = s . [<*z,x*>,and2] holds (Following s) . (GFA1CarryOutput (x,y,z)) = (a1 'or' a2) 'or' a3 set xy = [<*x,y*>,and2c]; set yz = [<*y,z*>,and2a]; set zx = [<*z,x*>,and2]; let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . [<*x,y*>,and2c] & a2 = s . [<*y,z*>,and2a] & a3 = s . [<*z,x*>,and2] implies (Following s) . (GFA1CarryOutput (x,y,z)) = (a1 'or' a2) 'or' a3 ) assume A1: ( a1 = s . [<*x,y*>,and2c] & a2 = s . [<*y,z*>,and2a] & a3 = s . [<*z,x*>,and2] ) ; ::_thesis: (Following s) . (GFA1CarryOutput (x,y,z)) = (a1 'or' a2) 'or' a3 set S = GFA1CarryStr (x,y,z); reconsider xy = [<*x,y*>,and2c], yz = [<*y,z*>,and2a], zx = [<*z,x*>,and2] as Element of InnerVertices (GFA1CarryStr (x,y,z)) by Th48; A2: dom s = the carrier of (GFA1CarryStr (x,y,z)) by CIRCUIT1:3; InnerVertices (GFA1CarryStr (x,y,z)) = the carrier' of (GFA1CarryStr (x,y,z)) by FACIRC_1:37; hence (Following s) . (GFA1CarryOutput (x,y,z)) = or3 . (s * <*xy,yz,zx*>) by FACIRC_1:35 .= or3 . <*a1,a2,a3*> by A1, A2, FINSEQ_2:126 .= (a1 'or' a2) 'or' a3 by TWOSCOMP:14 ; ::_thesis: verum end; theorem Th53: :: GFACIRC1:53 for x, y, z being set st x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] holds for s being State of (GFA1CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA1CarryOutput (x,y,z)) = ((a1 '&' ('not' a2)) 'or' (('not' a2) '&' a3)) 'or' (a3 '&' a1) & (Following (s,2)) . [<*x,y*>,and2c] = a1 '&' ('not' a2) & (Following (s,2)) . [<*y,z*>,and2a] = ('not' a2) '&' a3 & (Following (s,2)) . [<*z,x*>,and2] = a3 '&' a1 ) proof set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] implies for s being State of (GFA1CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA1CarryOutput (x,y,z)) = ((a1 '&' ('not' a2)) 'or' (('not' a2) '&' a3)) 'or' (a3 '&' a1) & (Following (s,2)) . [<*x,y*>,and2c] = a1 '&' ('not' a2) & (Following (s,2)) . [<*y,z*>,and2a] = ('not' a2) '&' a3 & (Following (s,2)) . [<*z,x*>,and2] = a3 '&' a1 ) ) assume A1: ( x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] ) ; ::_thesis: for s being State of (GFA1CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA1CarryOutput (x,y,z)) = ((a1 '&' ('not' a2)) 'or' (('not' a2) '&' a3)) 'or' (a3 '&' a1) & (Following (s,2)) . [<*x,y*>,and2c] = a1 '&' ('not' a2) & (Following (s,2)) . [<*y,z*>,and2a] = ('not' a2) '&' a3 & (Following (s,2)) . [<*z,x*>,and2] = a3 '&' a1 ) set S = GFA1CarryStr (x,y,z); reconsider x9 = x, y9 = y, z9 = z as Vertex of (GFA1CarryStr (x,y,z)) by Th47; let s be State of (GFA1CarryCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA1CarryOutput (x,y,z)) = ((a1 '&' ('not' a2)) 'or' (('not' a2) '&' a3)) 'or' (a3 '&' a1) & (Following (s,2)) . [<*x,y*>,and2c] = a1 '&' ('not' a2) & (Following (s,2)) . [<*y,z*>,and2a] = ('not' a2) '&' a3 & (Following (s,2)) . [<*z,x*>,and2] = a3 '&' a1 ) y in InputVertices (GFA1CarryStr (x,y,z)) by A1, Th49; then A2: (Following s) . y9 = s . y by CIRCUIT2:def_5; z in InputVertices (GFA1CarryStr (x,y,z)) by A1, Th49; then A3: (Following s) . z9 = s . z by CIRCUIT2:def_5; set xy = [<*x,y*>,and2c]; set yz = [<*y,z*>,and2a]; set zx = [<*z,x*>,and2]; A4: Following (s,2) = Following (Following s) by FACIRC_1:15; let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies ( (Following (s,2)) . (GFA1CarryOutput (x,y,z)) = ((a1 '&' ('not' a2)) 'or' (('not' a2) '&' a3)) 'or' (a3 '&' a1) & (Following (s,2)) . [<*x,y*>,and2c] = a1 '&' ('not' a2) & (Following (s,2)) . [<*y,z*>,and2a] = ('not' a2) '&' a3 & (Following (s,2)) . [<*z,x*>,and2] = a3 '&' a1 ) ) assume A5: ( a1 = s . x & a2 = s . y & a3 = s . z ) ; ::_thesis: ( (Following (s,2)) . (GFA1CarryOutput (x,y,z)) = ((a1 '&' ('not' a2)) 'or' (('not' a2) '&' a3)) 'or' (a3 '&' a1) & (Following (s,2)) . [<*x,y*>,and2c] = a1 '&' ('not' a2) & (Following (s,2)) . [<*y,z*>,and2a] = ('not' a2) '&' a3 & (Following (s,2)) . [<*z,x*>,and2] = a3 '&' a1 ) A6: (Following s) . [<*z,x*>,and2] = a3 '&' a1 by A5, Th51; ( (Following s) . [<*x,y*>,and2c] = a1 '&' ('not' a2) & (Following s) . [<*y,z*>,and2a] = ('not' a2) '&' a3 ) by A5, Th51; hence (Following (s,2)) . (GFA1CarryOutput (x,y,z)) = ((a1 '&' ('not' a2)) 'or' (('not' a2) '&' a3)) 'or' (a3 '&' a1) by A4, A6, Th52; ::_thesis: ( (Following (s,2)) . [<*x,y*>,and2c] = a1 '&' ('not' a2) & (Following (s,2)) . [<*y,z*>,and2a] = ('not' a2) '&' a3 & (Following (s,2)) . [<*z,x*>,and2] = a3 '&' a1 ) x in InputVertices (GFA1CarryStr (x,y,z)) by A1, Th49; then (Following s) . x9 = s . x by CIRCUIT2:def_5; hence ( (Following (s,2)) . [<*x,y*>,and2c] = a1 '&' ('not' a2) & (Following (s,2)) . [<*y,z*>,and2a] = ('not' a2) '&' a3 & (Following (s,2)) . [<*z,x*>,and2] = a3 '&' a1 ) by A5, A2, A3, A4, Th51; ::_thesis: verum end; theorem Th54: :: GFACIRC1:54 for x, y, z being set st x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] holds for s being State of (GFA1CarryCirc (x,y,z)) holds Following (s,2) is stable proof set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] implies for s being State of (GFA1CarryCirc (x,y,z)) holds Following (s,2) is stable ) assume A1: ( x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] ) ; ::_thesis: for s being State of (GFA1CarryCirc (x,y,z)) holds Following (s,2) is stable set S = GFA1CarryStr (x,y,z); reconsider xx = x, yy = y, zz = z as Vertex of (GFA1CarryStr (x,y,z)) by Th47; let s be State of (GFA1CarryCirc (x,y,z)); ::_thesis: Following (s,2) is stable set a1 = s . xx; set a2 = s . yy; set a3 = s . zz; set ffs = Following (s,2); set fffs = Following (Following (s,2)); set xy = [<*x,y*>,and2c]; set yz = [<*y,z*>,and2a]; set zx = [<*z,x*>,and2]; A2: Following (s,2) = Following (Following s) by FACIRC_1:15; A3: z in InputVertices (GFA1CarryStr (x,y,z)) by A1, Th49; then (Following s) . z = s . zz by CIRCUIT2:def_5; then A4: (Following (s,2)) . z = s . zz by A2, A3, CIRCUIT2:def_5; A5: y in InputVertices (GFA1CarryStr (x,y,z)) by A1, Th49; then (Following s) . y = s . yy by CIRCUIT2:def_5; then A6: (Following (s,2)) . y = s . yy by A2, A5, CIRCUIT2:def_5; A7: x in InputVertices (GFA1CarryStr (x,y,z)) by A1, Th49; then (Following s) . x = s . xx by CIRCUIT2:def_5; then A8: (Following (s,2)) . x = s . xx by A2, A7, CIRCUIT2:def_5; s . zz = s . z ; then A9: (Following (s,2)) . [<*x,y*>,and2c] = (s . xx) '&' ('not' (s . yy)) by A1, Th53; s . yy = s . y ; then A10: (Following (s,2)) . [<*z,x*>,and2] = (s . xx) '&' (s . zz) by A1, Th53; s . xx = s . x ; then A11: (Following (s,2)) . [<*y,z*>,and2a] = ('not' (s . yy)) '&' (s . zz) by A1, Th53; A12: (Following (s,2)) . (GFA1CarryOutput (x,y,z)) = (((s . xx) '&' ('not' (s . yy))) 'or' (('not' (s . yy)) '&' (s . zz))) 'or' ((s . zz) '&' (s . xx)) by A1, Th53; A13: now__::_thesis:_for_a_being_set_st_a_in_the_carrier_of_(GFA1CarryStr_(x,y,z))_holds_ (Following_(s,2))_._a_=_(Following_(Following_(s,2)))_._a let a be set ; ::_thesis: ( a in the carrier of (GFA1CarryStr (x,y,z)) implies (Following (s,2)) . a = (Following (Following (s,2))) . a ) assume A14: a in the carrier of (GFA1CarryStr (x,y,z)) ; ::_thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a then reconsider v = a as Vertex of (GFA1CarryStr (x,y,z)) ; A15: v in (InputVertices (GFA1CarryStr (x,y,z))) \/ (InnerVertices (GFA1CarryStr (x,y,z))) by A14, XBOOLE_1:45; thus (Following (s,2)) . a = (Following (Following (s,2))) . a ::_thesis: verum proof percases ( v in InputVertices (GFA1CarryStr (x,y,z)) or v in InnerVertices (GFA1CarryStr (x,y,z)) ) by A15, XBOOLE_0:def_3; suppose v in InputVertices (GFA1CarryStr (x,y,z)) ; ::_thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a hence (Following (s,2)) . a = (Following (Following (s,2))) . a by CIRCUIT2:def_5; ::_thesis: verum end; suppose v in InnerVertices (GFA1CarryStr (x,y,z)) ; ::_thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a then v in {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} \/ {(GFA1CarryOutput (x,y,z))} by Th42; then ( v in {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} or v in {(GFA1CarryOutput (x,y,z))} ) by XBOOLE_0:def_3; then ( v = [<*x,y*>,and2c] or v = [<*y,z*>,and2a] or v = [<*z,x*>,and2] or v = GFA1CarryOutput (x,y,z) ) by ENUMSET1:def_1, TARSKI:def_1; hence (Following (s,2)) . a = (Following (Following (s,2))) . a by A12, A9, A11, A10, A8, A6, A4, Th51, Th52; ::_thesis: verum end; end; end; end; ( dom (Following (Following (s,2))) = the carrier of (GFA1CarryStr (x,y,z)) & dom (Following (s,2)) = the carrier of (GFA1CarryStr (x,y,z)) ) by CIRCUIT1:3; hence Following (s,2) = Following (Following (s,2)) by A13, FUNCT_1:2; :: according to CIRCUIT2:def_6 ::_thesis: verum end; definition let x, y, z be set ; func GFA1AdderStr (x,y,z) -> non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: GFACIRC1:def 22 2GatesCircStr (x,y,z,xor2c); coherence 2GatesCircStr (x,y,z,xor2c) is non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign ; end; :: deftheorem defines GFA1AdderStr GFACIRC1:def_22_:_ for x, y, z being set holds GFA1AdderStr (x,y,z) = 2GatesCircStr (x,y,z,xor2c); definition let x, y, z be set ; func GFA1AdderCirc (x,y,z) -> strict gate`2=den Boolean Circuit of GFA1AdderStr (x,y,z) equals :: GFACIRC1:def 23 2GatesCircuit (x,y,z,xor2c); coherence 2GatesCircuit (x,y,z,xor2c) is strict gate`2=den Boolean Circuit of GFA1AdderStr (x,y,z) ; end; :: deftheorem defines GFA1AdderCirc GFACIRC1:def_23_:_ for x, y, z being set holds GFA1AdderCirc (x,y,z) = 2GatesCircuit (x,y,z,xor2c); definition let x, y, z be set ; func GFA1AdderOutput (x,y,z) -> Element of InnerVertices (GFA1AdderStr (x,y,z)) equals :: GFACIRC1:def 24 2GatesCircOutput (x,y,z,xor2c); coherence 2GatesCircOutput (x,y,z,xor2c) is Element of InnerVertices (GFA1AdderStr (x,y,z)) ; end; :: deftheorem defines GFA1AdderOutput GFACIRC1:def_24_:_ for x, y, z being set holds GFA1AdderOutput (x,y,z) = 2GatesCircOutput (x,y,z,xor2c); theorem Th55: :: GFACIRC1:55 for x, y, z being set holds InnerVertices (GFA1AdderStr (x,y,z)) = {[<*x,y*>,xor2c]} \/ {(GFA1AdderOutput (x,y,z))} proof let x, y, z be set ; ::_thesis: InnerVertices (GFA1AdderStr (x,y,z)) = {[<*x,y*>,xor2c]} \/ {(GFA1AdderOutput (x,y,z))} set f = xor2c ; set xy = [<*x,y*>,xor2c]; set S = GFA1AdderStr (x,y,z); thus InnerVertices (GFA1AdderStr (x,y,z)) = {[<*x,y*>,xor2c],(GFA1AdderOutput (x,y,z))} by FACIRC_1:56 .= {[<*x,y*>,xor2c]} \/ {(GFA1AdderOutput (x,y,z))} by ENUMSET1:1 ; ::_thesis: verum end; theorem :: GFACIRC1:56 for x, y, z being set holds ( x in the carrier of (GFA1AdderStr (x,y,z)) & y in the carrier of (GFA1AdderStr (x,y,z)) & z in the carrier of (GFA1AdderStr (x,y,z)) & [<*x,y*>,xor2c] in the carrier of (GFA1AdderStr (x,y,z)) & [<*[<*x,y*>,xor2c],z*>,xor2c] in the carrier of (GFA1AdderStr (x,y,z)) ) by FACIRC_1:60, FACIRC_1:61; theorem Th57: :: GFACIRC1:57 for x, y, z being set holds ( [<*x,y*>,xor2c] in InnerVertices (GFA1AdderStr (x,y,z)) & GFA1AdderOutput (x,y,z) in InnerVertices (GFA1AdderStr (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( [<*x,y*>,xor2c] in InnerVertices (GFA1AdderStr (x,y,z)) & GFA1AdderOutput (x,y,z) in InnerVertices (GFA1AdderStr (x,y,z)) ) set f = xor2c ; set S = GFA1AdderStr (x,y,z); InnerVertices (GFA1AdderStr (x,y,z)) = {[<*x,y*>,xor2c]} \/ {(GFA1AdderOutput (x,y,z))} by Th55 .= {[<*x,y*>,xor2c],(GFA1AdderOutput (x,y,z))} by ENUMSET1:1 ; hence ( [<*x,y*>,xor2c] in InnerVertices (GFA1AdderStr (x,y,z)) & GFA1AdderOutput (x,y,z) in InnerVertices (GFA1AdderStr (x,y,z)) ) by TARSKI:def_2; ::_thesis: verum end; theorem Th58: :: GFACIRC1:58 for x, y, z being set st z <> [<*x,y*>,xor2c] holds ( x in InputVertices (GFA1AdderStr (x,y,z)) & y in InputVertices (GFA1AdderStr (x,y,z)) & z in InputVertices (GFA1AdderStr (x,y,z)) ) proof set f = xor2c ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2c] implies ( x in InputVertices (GFA1AdderStr (x,y,z)) & y in InputVertices (GFA1AdderStr (x,y,z)) & z in InputVertices (GFA1AdderStr (x,y,z)) ) ) assume A1: z <> [<*x,y*>,xor2c] ; ::_thesis: ( x in InputVertices (GFA1AdderStr (x,y,z)) & y in InputVertices (GFA1AdderStr (x,y,z)) & z in InputVertices (GFA1AdderStr (x,y,z)) ) set S = GFA1AdderStr (x,y,z); InputVertices (GFA1AdderStr (x,y,z)) = {x,y,z} by A1, FACIRC_1:57; hence ( x in InputVertices (GFA1AdderStr (x,y,z)) & y in InputVertices (GFA1AdderStr (x,y,z)) & z in InputVertices (GFA1AdderStr (x,y,z)) ) by ENUMSET1:def_1; ::_thesis: verum end; theorem Th59: :: GFACIRC1:59 for x, y, z being set st z <> [<*x,y*>,xor2c] holds for s being State of (GFA1AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) proof set f = xor2c ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2c] implies for s being State of (GFA1AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) ) assume A1: z <> [<*x,y*>,xor2c] ; ::_thesis: for s being State of (GFA1AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) set A = GFA1AdderCirc (x,y,z); set xy = [<*x,y*>,xor2c]; let s be State of (GFA1AdderCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies ( (Following s) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) ) assume that A2: ( a1 = s . x & a2 = s . y ) and A3: a3 = s . z ; ::_thesis: ( (Following s) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) (Following s) . [<*x,y*>,xor2c] = xor2c . <*a1,a2*> by A1, A2, Lm3; hence (Following s) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) by Def4; ::_thesis: ( (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) thus ( (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) by A1, A2, A3, Lm3; ::_thesis: verum end; theorem Th60: :: GFACIRC1:60 for x, y, z being set st z <> [<*x,y*>,xor2c] holds for s being State of (GFA1AdderCirc (x,y,z)) for a1a2, a1, a2, a3 being Element of BOOLEAN st a1a2 = s . [<*x,y*>,xor2c] & a3 = s . z holds (Following s) . (GFA1AdderOutput (x,y,z)) = a1a2 'xor' ('not' a3) proof set f = xor2c ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2c] implies for s being State of (GFA1AdderCirc (x,y,z)) for a1a2, a1, a2, a3 being Element of BOOLEAN st a1a2 = s . [<*x,y*>,xor2c] & a3 = s . z holds (Following s) . (GFA1AdderOutput (x,y,z)) = a1a2 'xor' ('not' a3) ) assume A1: z <> [<*x,y*>,xor2c] ; ::_thesis: for s being State of (GFA1AdderCirc (x,y,z)) for a1a2, a1, a2, a3 being Element of BOOLEAN st a1a2 = s . [<*x,y*>,xor2c] & a3 = s . z holds (Following s) . (GFA1AdderOutput (x,y,z)) = a1a2 'xor' ('not' a3) set A = GFA1AdderCirc (x,y,z); set xy = [<*x,y*>,xor2c]; let s be State of (GFA1AdderCirc (x,y,z)); ::_thesis: for a1a2, a1, a2, a3 being Element of BOOLEAN st a1a2 = s . [<*x,y*>,xor2c] & a3 = s . z holds (Following s) . (GFA1AdderOutput (x,y,z)) = a1a2 'xor' ('not' a3) let a1a2, a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1a2 = s . [<*x,y*>,xor2c] & a3 = s . z implies (Following s) . (GFA1AdderOutput (x,y,z)) = a1a2 'xor' ('not' a3) ) assume A2: ( a1a2 = s . [<*x,y*>,xor2c] & a3 = s . z ) ; ::_thesis: (Following s) . (GFA1AdderOutput (x,y,z)) = a1a2 'xor' ('not' a3) thus (Following s) . (GFA1AdderOutput (x,y,z)) = xor2c . <*(s . [<*x,y*>,xor2c]),(s . z)*> by A1, Lm3 .= a1a2 'xor' ('not' a3) by A2, Def4 ; ::_thesis: verum end; theorem Th61: :: GFACIRC1:61 for x, y, z being set st z <> [<*x,y*>,xor2c] holds for s being State of (GFA1AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = (a1 'xor' ('not' a2)) 'xor' ('not' a3) & (Following (s,2)) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) proof set f = xor2c ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2c] implies for s being State of (GFA1AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = (a1 'xor' ('not' a2)) 'xor' ('not' a3) & (Following (s,2)) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) ) assume A1: z <> [<*x,y*>,xor2c] ; ::_thesis: for s being State of (GFA1AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = (a1 'xor' ('not' a2)) 'xor' ('not' a3) & (Following (s,2)) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) set xy = [<*x,y*>,xor2c]; set A = GFA1AdderCirc (x,y,z); let s be State of (GFA1AdderCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = (a1 'xor' ('not' a2)) 'xor' ('not' a3) & (Following (s,2)) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies ( (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = (a1 'xor' ('not' a2)) 'xor' ('not' a3) & (Following (s,2)) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) ) assume that A2: ( a1 = s . x & a2 = s . y ) and A3: a3 = s . z ; ::_thesis: ( (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = (a1 'xor' ('not' a2)) 'xor' ('not' a3) & (Following (s,2)) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) thus (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = xor2c . <*(xor2c . <*a1,a2*>),a3*> by A1, A2, A3, FACIRC_1:62 .= xor2c . <*(a1 'xor' ('not' a2)),a3*> by Def4 .= (a1 'xor' ('not' a2)) 'xor' ('not' a3) by Def4 ; ::_thesis: ( (Following (s,2)) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) (Following (s,2)) . [<*x,y*>,xor2c] = xor2c . <*a1,a2*> by A1, A2, FACIRC_1:62; hence (Following (s,2)) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) by Def4; ::_thesis: ( (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) thus ( (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) by A1, A2, A3, FACIRC_1:62; ::_thesis: verum end; theorem Th62: :: GFACIRC1:62 for x, y, z being set st z <> [<*x,y*>,xor2c] holds for s being State of (GFA1AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = 'not' ((a1 'xor' ('not' a2)) 'xor' a3) proof set f = xor2c ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2c] implies for s being State of (GFA1AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = 'not' ((a1 'xor' ('not' a2)) 'xor' a3) ) assume A1: z <> [<*x,y*>,xor2c] ; ::_thesis: for s being State of (GFA1AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = 'not' ((a1 'xor' ('not' a2)) 'xor' a3) set A = GFA1AdderCirc (x,y,z); let s be State of (GFA1AdderCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = 'not' ((a1 'xor' ('not' a2)) 'xor' a3) let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = 'not' ((a1 'xor' ('not' a2)) 'xor' a3) ) assume ( a1 = s . x & a2 = s . y & a3 = s . z ) ; ::_thesis: (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = 'not' ((a1 'xor' ('not' a2)) 'xor' a3) hence (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = (a1 'xor' ('not' a2)) 'xor' ('not' a3) by A1, Th61 .= 'not' ((a1 'xor' ('not' a2)) 'xor' a3) by XBOOLEAN:74 ; ::_thesis: verum end; definition let x, y, z be set ; func BitGFA1Str (x,y,z) -> non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: GFACIRC1:def 25 (GFA1AdderStr (x,y,z)) +* (GFA1CarryStr (x,y,z)); coherence (GFA1AdderStr (x,y,z)) +* (GFA1CarryStr (x,y,z)) is non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign ; end; :: deftheorem defines BitGFA1Str GFACIRC1:def_25_:_ for x, y, z being set holds BitGFA1Str (x,y,z) = (GFA1AdderStr (x,y,z)) +* (GFA1CarryStr (x,y,z)); definition let x, y, z be set ; func BitGFA1Circ (x,y,z) -> strict gate`2=den Boolean Circuit of BitGFA1Str (x,y,z) equals :: GFACIRC1:def 26 (GFA1AdderCirc (x,y,z)) +* (GFA1CarryCirc (x,y,z)); coherence (GFA1AdderCirc (x,y,z)) +* (GFA1CarryCirc (x,y,z)) is strict gate`2=den Boolean Circuit of BitGFA1Str (x,y,z) ; end; :: deftheorem defines BitGFA1Circ GFACIRC1:def_26_:_ for x, y, z being set holds BitGFA1Circ (x,y,z) = (GFA1AdderCirc (x,y,z)) +* (GFA1CarryCirc (x,y,z)); theorem Th63: :: GFACIRC1:63 for x, y, z being set holds InnerVertices (BitGFA1Str (x,y,z)) = (({[<*x,y*>,xor2c]} \/ {(GFA1AdderOutput (x,y,z))}) \/ {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]}) \/ {(GFA1CarryOutput (x,y,z))} proof let x, y, z be set ; ::_thesis: InnerVertices (BitGFA1Str (x,y,z)) = (({[<*x,y*>,xor2c]} \/ {(GFA1AdderOutput (x,y,z))}) \/ {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]}) \/ {(GFA1CarryOutput (x,y,z))} set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; set f0 = xor2c ; set xyf0 = [<*x,y*>,xor2c]; set xyf1 = [<*x,y*>,and2c]; set yzf2 = [<*y,z*>,and2a]; set zxf3 = [<*z,x*>,and2]; set S = BitGFA1Str (x,y,z); set S1 = GFA1AdderStr (x,y,z); set S2 = GFA1CarryStr (x,y,z); set A1 = GFA1AdderOutput (x,y,z); set A2 = GFA1CarryOutput (x,y,z); thus InnerVertices (BitGFA1Str (x,y,z)) = (InnerVertices (GFA1AdderStr (x,y,z))) \/ (InnerVertices (GFA1CarryStr (x,y,z))) by FACIRC_1:27 .= ({[<*x,y*>,xor2c]} \/ {(GFA1AdderOutput (x,y,z))}) \/ (InnerVertices (GFA1CarryStr (x,y,z))) by Th55 .= ({[<*x,y*>,xor2c]} \/ {(GFA1AdderOutput (x,y,z))}) \/ ({[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} \/ {(GFA1CarryOutput (x,y,z))}) by Th42 .= (({[<*x,y*>,xor2c]} \/ {(GFA1AdderOutput (x,y,z))}) \/ {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]}) \/ {(GFA1CarryOutput (x,y,z))} by XBOOLE_1:4 ; ::_thesis: verum end; theorem :: GFACIRC1:64 for x, y, z being set holds InnerVertices (BitGFA1Str (x,y,z)) is Relation proof let x, y, z be set ; ::_thesis: InnerVertices (BitGFA1Str (x,y,z)) is Relation set S1 = GFA1AdderStr (x,y,z); set S2 = GFA1CarryStr (x,y,z); ( InnerVertices (GFA1AdderStr (x,y,z)) is Relation & InnerVertices (GFA1CarryStr (x,y,z)) is Relation ) by Th43, FACIRC_1:58; hence InnerVertices (BitGFA1Str (x,y,z)) is Relation by FACIRC_1:3; ::_thesis: verum end; theorem Th65: :: GFACIRC1:65 for x, y, z being set st z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] holds InputVertices (BitGFA1Str (x,y,z)) = {x,y,z} proof set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; set f0 = xor2c ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] implies InputVertices (BitGFA1Str (x,y,z)) = {x,y,z} ) assume A1: ( z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] ) ; ::_thesis: InputVertices (BitGFA1Str (x,y,z)) = {x,y,z} set S2 = GFA1CarryStr (x,y,z); set S1 = GFA1AdderStr (x,y,z); ( InputVertices (GFA1AdderStr (x,y,z)) = {x,y,z} & InputVertices (GFA1CarryStr (x,y,z)) = {x,y,z} ) by A1, Th45, FACIRC_1:57; hence InputVertices (BitGFA1Str (x,y,z)) = {x,y,z} by CIRCCOMB:47, FACIRC_2:21; ::_thesis: verum end; theorem Th66: :: GFACIRC1:66 for x, y, z being non pair set holds InputVertices (BitGFA1Str (x,y,z)) = {x,y,z} proof let x, y, z be non pair set ; ::_thesis: InputVertices (BitGFA1Str (x,y,z)) = {x,y,z} set S = BitGFA1Str (x,y,z); set S1 = GFA1AdderStr (x,y,z); set S2 = GFA1CarryStr (x,y,z); A1: ( InputVertices (GFA1AdderStr (x,y,z)) = {x,y,z} & InputVertices (GFA1CarryStr (x,y,z)) = {x,y,z} ) by Th50, FACIRC_1:57; ( InnerVertices (GFA1AdderStr (x,y,z)) is Relation & InnerVertices (GFA1CarryStr (x,y,z)) is Relation ) by Th43, FACIRC_1:58; hence InputVertices (BitGFA1Str (x,y,z)) = {x,y,z} \/ {x,y,z} by A1, FACIRC_1:7 .= {x,y,z} ; ::_thesis: verum end; theorem :: GFACIRC1:67 for x, y, z being non pair set holds InputVertices (BitGFA1Str (x,y,z)) is without_pairs proof let x, y, z be non pair set ; ::_thesis: InputVertices (BitGFA1Str (x,y,z)) is without_pairs InputVertices (BitGFA1Str (x,y,z)) = {x,y,z} by Th66; hence InputVertices (BitGFA1Str (x,y,z)) is without_pairs ; ::_thesis: verum end; theorem :: GFACIRC1:68 for x, y, z being set holds ( x in the carrier of (BitGFA1Str (x,y,z)) & y in the carrier of (BitGFA1Str (x,y,z)) & z in the carrier of (BitGFA1Str (x,y,z)) & [<*x,y*>,xor2c] in the carrier of (BitGFA1Str (x,y,z)) & [<*[<*x,y*>,xor2c],z*>,xor2c] in the carrier of (BitGFA1Str (x,y,z)) & [<*x,y*>,and2c] in the carrier of (BitGFA1Str (x,y,z)) & [<*y,z*>,and2a] in the carrier of (BitGFA1Str (x,y,z)) & [<*z,x*>,and2] in the carrier of (BitGFA1Str (x,y,z)) & [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3] in the carrier of (BitGFA1Str (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( x in the carrier of (BitGFA1Str (x,y,z)) & y in the carrier of (BitGFA1Str (x,y,z)) & z in the carrier of (BitGFA1Str (x,y,z)) & [<*x,y*>,xor2c] in the carrier of (BitGFA1Str (x,y,z)) & [<*[<*x,y*>,xor2c],z*>,xor2c] in the carrier of (BitGFA1Str (x,y,z)) & [<*x,y*>,and2c] in the carrier of (BitGFA1Str (x,y,z)) & [<*y,z*>,and2a] in the carrier of (BitGFA1Str (x,y,z)) & [<*z,x*>,and2] in the carrier of (BitGFA1Str (x,y,z)) & [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3] in the carrier of (BitGFA1Str (x,y,z)) ) set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; set f4 = or3 ; set f0 = xor2c ; set xy = [<*x,y*>,and2c]; set yz = [<*y,z*>,and2a]; set zx = [<*z,x*>,and2]; set xyz = [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3]; set S1 = GFA1AdderStr (x,y,z); set S2 = GFA1CarryStr (x,y,z); A1: ( x in the carrier of (GFA1AdderStr (x,y,z)) & y in the carrier of (GFA1AdderStr (x,y,z)) ) by FACIRC_1:60; A2: ( z in the carrier of (GFA1AdderStr (x,y,z)) & [<*x,y*>,xor2c] in the carrier of (GFA1AdderStr (x,y,z)) ) by FACIRC_1:60, FACIRC_1:61; A3: [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3] in the carrier of (GFA1CarryStr (x,y,z)) by Th47; A4: ( [<*y,z*>,and2a] in the carrier of (GFA1CarryStr (x,y,z)) & [<*z,x*>,and2] in the carrier of (GFA1CarryStr (x,y,z)) ) by Th47; ( [<*[<*x,y*>,xor2c],z*>,xor2c] in the carrier of (GFA1AdderStr (x,y,z)) & [<*x,y*>,and2c] in the carrier of (GFA1CarryStr (x,y,z)) ) by Th47, FACIRC_1:61; hence ( x in the carrier of (BitGFA1Str (x,y,z)) & y in the carrier of (BitGFA1Str (x,y,z)) & z in the carrier of (BitGFA1Str (x,y,z)) & [<*x,y*>,xor2c] in the carrier of (BitGFA1Str (x,y,z)) & [<*[<*x,y*>,xor2c],z*>,xor2c] in the carrier of (BitGFA1Str (x,y,z)) & [<*x,y*>,and2c] in the carrier of (BitGFA1Str (x,y,z)) & [<*y,z*>,and2a] in the carrier of (BitGFA1Str (x,y,z)) & [<*z,x*>,and2] in the carrier of (BitGFA1Str (x,y,z)) & [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3] in the carrier of (BitGFA1Str (x,y,z)) ) by A1, A2, A4, A3, FACIRC_1:20; ::_thesis: verum end; theorem Th69: :: GFACIRC1:69 for x, y, z being set holds ( [<*x,y*>,xor2c] in InnerVertices (BitGFA1Str (x,y,z)) & GFA1AdderOutput (x,y,z) in InnerVertices (BitGFA1Str (x,y,z)) & [<*x,y*>,and2c] in InnerVertices (BitGFA1Str (x,y,z)) & [<*y,z*>,and2a] in InnerVertices (BitGFA1Str (x,y,z)) & [<*z,x*>,and2] in InnerVertices (BitGFA1Str (x,y,z)) & GFA1CarryOutput (x,y,z) in InnerVertices (BitGFA1Str (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( [<*x,y*>,xor2c] in InnerVertices (BitGFA1Str (x,y,z)) & GFA1AdderOutput (x,y,z) in InnerVertices (BitGFA1Str (x,y,z)) & [<*x,y*>,and2c] in InnerVertices (BitGFA1Str (x,y,z)) & [<*y,z*>,and2a] in InnerVertices (BitGFA1Str (x,y,z)) & [<*z,x*>,and2] in InnerVertices (BitGFA1Str (x,y,z)) & GFA1CarryOutput (x,y,z) in InnerVertices (BitGFA1Str (x,y,z)) ) set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; set f0 = xor2c ; set xyf0 = [<*x,y*>,xor2c]; set xyf1 = [<*x,y*>,and2c]; set yzf2 = [<*y,z*>,and2a]; set zxf3 = [<*z,x*>,and2]; set S = BitGFA1Str (x,y,z); set A1 = GFA1AdderOutput (x,y,z); set A2 = GFA1CarryOutput (x,y,z); InnerVertices (BitGFA1Str (x,y,z)) = (({[<*x,y*>,xor2c]} \/ {(GFA1AdderOutput (x,y,z))}) \/ {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]}) \/ {(GFA1CarryOutput (x,y,z))} by Th63 .= ({[<*x,y*>,xor2c],(GFA1AdderOutput (x,y,z))} \/ {[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]}) \/ {(GFA1CarryOutput (x,y,z))} by ENUMSET1:1 .= {[<*x,y*>,xor2c],(GFA1AdderOutput (x,y,z)),[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]} \/ {(GFA1CarryOutput (x,y,z))} by ENUMSET1:8 .= {[<*x,y*>,xor2c],(GFA1AdderOutput (x,y,z)),[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2],(GFA1CarryOutput (x,y,z))} by ENUMSET1:15 ; hence ( [<*x,y*>,xor2c] in InnerVertices (BitGFA1Str (x,y,z)) & GFA1AdderOutput (x,y,z) in InnerVertices (BitGFA1Str (x,y,z)) & [<*x,y*>,and2c] in InnerVertices (BitGFA1Str (x,y,z)) & [<*y,z*>,and2a] in InnerVertices (BitGFA1Str (x,y,z)) & [<*z,x*>,and2] in InnerVertices (BitGFA1Str (x,y,z)) & GFA1CarryOutput (x,y,z) in InnerVertices (BitGFA1Str (x,y,z)) ) by ENUMSET1:def_4; ::_thesis: verum end; theorem :: GFACIRC1:70 for x, y, z being set st z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] holds ( x in InputVertices (BitGFA1Str (x,y,z)) & y in InputVertices (BitGFA1Str (x,y,z)) & z in InputVertices (BitGFA1Str (x,y,z)) ) proof set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; set f0 = xor2c ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] implies ( x in InputVertices (BitGFA1Str (x,y,z)) & y in InputVertices (BitGFA1Str (x,y,z)) & z in InputVertices (BitGFA1Str (x,y,z)) ) ) assume A1: ( z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] ) ; ::_thesis: ( x in InputVertices (BitGFA1Str (x,y,z)) & y in InputVertices (BitGFA1Str (x,y,z)) & z in InputVertices (BitGFA1Str (x,y,z)) ) set S = BitGFA1Str (x,y,z); InputVertices (BitGFA1Str (x,y,z)) = {x,y,z} by A1, Th65; hence ( x in InputVertices (BitGFA1Str (x,y,z)) & y in InputVertices (BitGFA1Str (x,y,z)) & z in InputVertices (BitGFA1Str (x,y,z)) ) by ENUMSET1:def_1; ::_thesis: verum end; definition let x, y, z be set ; func BitGFA1CarryOutput (x,y,z) -> Element of InnerVertices (BitGFA1Str (x,y,z)) equals :: GFACIRC1:def 27 [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3]; coherence [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3] is Element of InnerVertices (BitGFA1Str (x,y,z)) proof GFA1CarryOutput (x,y,z) in InnerVertices (BitGFA1Str (x,y,z)) by Th69; hence [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3] is Element of InnerVertices (BitGFA1Str (x,y,z)) ; ::_thesis: verum end; end; :: deftheorem defines BitGFA1CarryOutput GFACIRC1:def_27_:_ for x, y, z being set holds BitGFA1CarryOutput (x,y,z) = [<*[<*x,y*>,and2c],[<*y,z*>,and2a],[<*z,x*>,and2]*>,or3]; definition let x, y, z be set ; func BitGFA1AdderOutput (x,y,z) -> Element of InnerVertices (BitGFA1Str (x,y,z)) equals :: GFACIRC1:def 28 2GatesCircOutput (x,y,z,xor2c); coherence 2GatesCircOutput (x,y,z,xor2c) is Element of InnerVertices (BitGFA1Str (x,y,z)) proof GFA1AdderOutput (x,y,z) in InnerVertices (BitGFA1Str (x,y,z)) by Th69; hence 2GatesCircOutput (x,y,z,xor2c) is Element of InnerVertices (BitGFA1Str (x,y,z)) ; ::_thesis: verum end; end; :: deftheorem defines BitGFA1AdderOutput GFACIRC1:def_28_:_ for x, y, z being set holds BitGFA1AdderOutput (x,y,z) = 2GatesCircOutput (x,y,z,xor2c); theorem :: GFACIRC1:71 for x, y, z being set st z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] holds for s being State of (BitGFA1Circ (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = 'not' ((a1 'xor' ('not' a2)) 'xor' a3) & (Following (s,2)) . (GFA1CarryOutput (x,y,z)) = ((a1 '&' ('not' a2)) 'or' (('not' a2) '&' a3)) 'or' (a3 '&' a1) ) proof set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; set f0 = xor2c ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] implies for s being State of (BitGFA1Circ (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = 'not' ((a1 'xor' ('not' a2)) 'xor' a3) & (Following (s,2)) . (GFA1CarryOutput (x,y,z)) = ((a1 '&' ('not' a2)) 'or' (('not' a2) '&' a3)) 'or' (a3 '&' a1) ) ) assume that A1: z <> [<*x,y*>,xor2c] and A2: ( x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] ) ; ::_thesis: for s being State of (BitGFA1Circ (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = 'not' ((a1 'xor' ('not' a2)) 'xor' a3) & (Following (s,2)) . (GFA1CarryOutput (x,y,z)) = ((a1 '&' ('not' a2)) 'or' (('not' a2) '&' a3)) 'or' (a3 '&' a1) ) set S2 = GFA1CarryStr (x,y,z); set S1 = GFA1AdderStr (x,y,z); InputVertices (GFA1AdderStr (x,y,z)) = {x,y,z} by A1, FACIRC_1:57; then A3: InputVertices (GFA1AdderStr (x,y,z)) = InputVertices (GFA1CarryStr (x,y,z)) by A2, Th45; set A2 = GFA1CarryCirc (x,y,z); set A1 = GFA1AdderCirc (x,y,z); set A = BitGFA1Circ (x,y,z); let s be State of (BitGFA1Circ (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = 'not' ((a1 'xor' ('not' a2)) 'xor' a3) & (Following (s,2)) . (GFA1CarryOutput (x,y,z)) = ((a1 '&' ('not' a2)) 'or' (('not' a2) '&' a3)) 'or' (a3 '&' a1) ) let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies ( (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = 'not' ((a1 'xor' ('not' a2)) 'xor' a3) & (Following (s,2)) . (GFA1CarryOutput (x,y,z)) = ((a1 '&' ('not' a2)) 'or' (('not' a2) '&' a3)) 'or' (a3 '&' a1) ) ) assume that A4: a1 = s . x and A5: a2 = s . y and A6: a3 = s . z ; ::_thesis: ( (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = 'not' ((a1 'xor' ('not' a2)) 'xor' a3) & (Following (s,2)) . (GFA1CarryOutput (x,y,z)) = ((a1 '&' ('not' a2)) 'or' (('not' a2) '&' a3)) 'or' (a3 '&' a1) ) reconsider s1 = s | the carrier of (GFA1AdderStr (x,y,z)) as State of (GFA1AdderCirc (x,y,z)) by FACIRC_1:26; A7: dom s1 = the carrier of (GFA1AdderStr (x,y,z)) by CIRCUIT1:3; z in the carrier of (GFA1AdderStr (x,y,z)) by FACIRC_1:60; then A8: a3 = s1 . z by A6, A7, FUNCT_1:47; y in the carrier of (GFA1AdderStr (x,y,z)) by FACIRC_1:60; then A9: a2 = s1 . y by A5, A7, FUNCT_1:47; reconsider t = s as State of ((GFA1AdderCirc (x,y,z)) +* (GFA1CarryCirc (x,y,z))) ; InnerVertices (GFA1CarryStr (x,y,z)) misses InputVertices (GFA1CarryStr (x,y,z)) by XBOOLE_1:79; then A10: (Following (t,2)) . (GFA1AdderOutput (x,y,z)) = (Following (s1,2)) . (GFA1AdderOutput (x,y,z)) by A3, FACIRC_1:32; reconsider s2 = s | the carrier of (GFA1CarryStr (x,y,z)) as State of (GFA1CarryCirc (x,y,z)) by FACIRC_1:26; A11: dom s2 = the carrier of (GFA1CarryStr (x,y,z)) by CIRCUIT1:3; x in the carrier of (GFA1AdderStr (x,y,z)) by FACIRC_1:60; then a1 = s1 . x by A4, A7, FUNCT_1:47; hence (Following (s,2)) . (GFA1AdderOutput (x,y,z)) = 'not' ((a1 'xor' ('not' a2)) 'xor' a3) by A1, A9, A8, A10, Th62; ::_thesis: (Following (s,2)) . (GFA1CarryOutput (x,y,z)) = ((a1 '&' ('not' a2)) 'or' (('not' a2) '&' a3)) 'or' (a3 '&' a1) InnerVertices (GFA1AdderStr (x,y,z)) misses InputVertices (GFA1AdderStr (x,y,z)) by XBOOLE_1:79; then A12: (Following (t,2)) . (GFA1CarryOutput (x,y,z)) = (Following (s2,2)) . (GFA1CarryOutput (x,y,z)) by A3, FACIRC_1:33; z in the carrier of (GFA1CarryStr (x,y,z)) by Th47; then A13: a3 = s2 . z by A6, A11, FUNCT_1:47; y in the carrier of (GFA1CarryStr (x,y,z)) by Th47; then A14: a2 = s2 . y by A5, A11, FUNCT_1:47; x in the carrier of (GFA1CarryStr (x,y,z)) by Th47; then a1 = s2 . x by A4, A11, FUNCT_1:47; hence (Following (s,2)) . (GFA1CarryOutput (x,y,z)) = ((a1 '&' ('not' a2)) 'or' (('not' a2) '&' a3)) 'or' (a3 '&' a1) by A2, A14, A13, A12, Th53; ::_thesis: verum end; theorem :: GFACIRC1:72 for x, y, z being set st z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] holds for s being State of (BitGFA1Circ (x,y,z)) holds Following (s,2) is stable proof set f1 = and2c ; set f2 = and2a ; set f3 = and2 ; set f0 = xor2c ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] implies for s being State of (BitGFA1Circ (x,y,z)) holds Following (s,2) is stable ) assume that A1: z <> [<*x,y*>,xor2c] and A2: ( x <> [<*y,z*>,and2a] & y <> [<*z,x*>,and2] & z <> [<*x,y*>,and2c] ) ; ::_thesis: for s being State of (BitGFA1Circ (x,y,z)) holds Following (s,2) is stable set A = BitGFA1Circ (x,y,z); let s be State of (BitGFA1Circ (x,y,z)); ::_thesis: Following (s,2) is stable set S2 = GFA1CarryStr (x,y,z); set S1 = GFA1AdderStr (x,y,z); InputVertices (GFA1AdderStr (x,y,z)) = {x,y,z} by A1, FACIRC_1:57; then A3: InputVertices (GFA1AdderStr (x,y,z)) = InputVertices (GFA1CarryStr (x,y,z)) by A2, Th45; set A1 = GFA1AdderCirc (x,y,z); reconsider s1 = s | the carrier of (GFA1AdderStr (x,y,z)) as State of (GFA1AdderCirc (x,y,z)) by FACIRC_1:26; Following (s1,2) is stable by A1, FACIRC_1:63; then A4: Following (s1,2) = Following (Following (s1,2)) by CIRCUIT2:def_6 .= Following (s1,(2 + 1)) by FACIRC_1:12 ; set A2 = GFA1CarryCirc (x,y,z); reconsider s2 = s | the carrier of (GFA1CarryStr (x,y,z)) as State of (GFA1CarryCirc (x,y,z)) by FACIRC_1:26; Following (s2,2) is stable by A2, Th54; then A5: Following (s2,2) = Following (Following (s2,2)) by CIRCUIT2:def_6 .= Following (s2,(2 + 1)) by FACIRC_1:12 ; reconsider t = s as State of ((GFA1AdderCirc (x,y,z)) +* (GFA1CarryCirc (x,y,z))) ; set S = BitGFA1Str (x,y,z); A6: dom (Following (s,3)) = the carrier of (BitGFA1Str (x,y,z)) by CIRCUIT1:3; InnerVertices (GFA1CarryStr (x,y,z)) misses InputVertices (GFA1CarryStr (x,y,z)) by XBOOLE_1:79; then A7: ( Following (s1,2) = (Following (t,2)) | the carrier of (GFA1AdderStr (x,y,z)) & Following (s1,3) = (Following (t,3)) | the carrier of (GFA1AdderStr (x,y,z)) ) by A3, FACIRC_1:30; InnerVertices (GFA1AdderStr (x,y,z)) misses InputVertices (GFA1AdderStr (x,y,z)) by XBOOLE_1:79; then A8: ( Following (s2,2) = (Following (t,2)) | the carrier of (GFA1CarryStr (x,y,z)) & Following (s2,3) = (Following (t,3)) | the carrier of (GFA1CarryStr (x,y,z)) ) by A3, FACIRC_1:31; A9: the carrier of (BitGFA1Str (x,y,z)) = the carrier of (GFA1AdderStr (x,y,z)) \/ the carrier of (GFA1CarryStr (x,y,z)) by CIRCCOMB:def_2; A10: ( dom (Following (s1,2)) = the carrier of (GFA1AdderStr (x,y,z)) & dom (Following (s2,2)) = the carrier of (GFA1CarryStr (x,y,z)) ) by CIRCUIT1:3; A11: now__::_thesis:_for_a_being_set_st_a_in_the_carrier_of_(BitGFA1Str_(x,y,z))_holds_ (Following_(s,2))_._a_=_(Following_(Following_(s,2)))_._a let a be set ; ::_thesis: ( a in the carrier of (BitGFA1Str (x,y,z)) implies (Following (s,2)) . a = (Following (Following (s,2))) . a ) assume a in the carrier of (BitGFA1Str (x,y,z)) ; ::_thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a then ( a in the carrier of (GFA1AdderStr (x,y,z)) or a in the carrier of (GFA1CarryStr (x,y,z)) ) by A9, XBOOLE_0:def_3; then ( ( (Following (s,2)) . a = (Following (s1,2)) . a & (Following (s,3)) . a = (Following (s1,3)) . a ) or ( (Following (s,2)) . a = (Following (s2,2)) . a & (Following (s,3)) . a = (Following (s2,3)) . a ) ) by A7, A8, A4, A5, A10, FUNCT_1:47; hence (Following (s,2)) . a = (Following (Following (s,2))) . a by A4, A5, FACIRC_1:12; ::_thesis: verum end; ( Following (s,(2 + 1)) = Following (Following (s,2)) & dom (Following (s,2)) = the carrier of (BitGFA1Str (x,y,z)) ) by CIRCUIT1:3, FACIRC_1:12; hence Following (s,2) = Following (Following (s,2)) by A6, A11, FUNCT_1:2; :: according to CIRCUIT2:def_6 ::_thesis: verum end; begin definition let x, y, z be set ; func GFA2CarryIStr (x,y,z) -> non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: GFACIRC1:def 29 ((1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c))) +* (1GateCircStr (<*z,x*>,and2b)); coherence ((1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c))) +* (1GateCircStr (<*z,x*>,and2b)) is non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign ; end; :: deftheorem defines GFA2CarryIStr GFACIRC1:def_29_:_ for x, y, z being set holds GFA2CarryIStr (x,y,z) = ((1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c))) +* (1GateCircStr (<*z,x*>,and2b)); definition let x, y, z be set ; func GFA2CarryICirc (x,y,z) -> strict gate`2=den Boolean Circuit of GFA2CarryIStr (x,y,z) equals :: GFACIRC1:def 30 ((1GateCircuit (x,y,and2a)) +* (1GateCircuit (y,z,and2c))) +* (1GateCircuit (z,x,and2b)); coherence ((1GateCircuit (x,y,and2a)) +* (1GateCircuit (y,z,and2c))) +* (1GateCircuit (z,x,and2b)) is strict gate`2=den Boolean Circuit of GFA2CarryIStr (x,y,z) ; end; :: deftheorem defines GFA2CarryICirc GFACIRC1:def_30_:_ for x, y, z being set holds GFA2CarryICirc (x,y,z) = ((1GateCircuit (x,y,and2a)) +* (1GateCircuit (y,z,and2c))) +* (1GateCircuit (z,x,and2b)); definition let x, y, z be set ; func GFA2CarryStr (x,y,z) -> non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: GFACIRC1:def 31 (GFA2CarryIStr (x,y,z)) +* (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)); coherence (GFA2CarryIStr (x,y,z)) +* (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)) is non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign ; end; :: deftheorem defines GFA2CarryStr GFACIRC1:def_31_:_ for x, y, z being set holds GFA2CarryStr (x,y,z) = (GFA2CarryIStr (x,y,z)) +* (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)); definition let x, y, z be set ; func GFA2CarryCirc (x,y,z) -> strict gate`2=den Boolean Circuit of GFA2CarryStr (x,y,z) equals :: GFACIRC1:def 32 (GFA2CarryICirc (x,y,z)) +* (1GateCircuit ([<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b],nor3)); coherence (GFA2CarryICirc (x,y,z)) +* (1GateCircuit ([<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b],nor3)) is strict gate`2=den Boolean Circuit of GFA2CarryStr (x,y,z) ; end; :: deftheorem defines GFA2CarryCirc GFACIRC1:def_32_:_ for x, y, z being set holds GFA2CarryCirc (x,y,z) = (GFA2CarryICirc (x,y,z)) +* (1GateCircuit ([<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b],nor3)); definition let x, y, z be set ; func GFA2CarryOutput (x,y,z) -> Element of InnerVertices (GFA2CarryStr (x,y,z)) equals :: GFACIRC1:def 33 [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3]; coherence [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3] is Element of InnerVertices (GFA2CarryStr (x,y,z)) proof [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3] in InnerVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)) by FACIRC_1:47; hence [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3] is Element of InnerVertices (GFA2CarryStr (x,y,z)) by FACIRC_1:21; ::_thesis: verum end; end; :: deftheorem defines GFA2CarryOutput GFACIRC1:def_33_:_ for x, y, z being set holds GFA2CarryOutput (x,y,z) = [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3]; theorem Th73: :: GFACIRC1:73 for x, y, z being set holds InnerVertices (GFA2CarryIStr (x,y,z)) = {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} proof let x, y, z be set ; ::_thesis: InnerVertices (GFA2CarryIStr (x,y,z)) = {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; set xy = [<*x,y*>,and2a]; set yz = [<*y,z*>,and2c]; set zx = [<*z,x*>,and2b]; set Cxy = 1GateCircStr (<*x,y*>,and2a); set Cyz = 1GateCircStr (<*y,z*>,and2c); set Czx = 1GateCircStr (<*z,x*>,and2b); A1: 1GateCircStr (<*x,y*>,and2a) tolerates 1GateCircStr (<*y,z*>,and2c) by CIRCCOMB:47; (1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c)) tolerates 1GateCircStr (<*z,x*>,and2b) by CIRCCOMB:47; then InnerVertices (GFA2CarryIStr (x,y,z)) = (InnerVertices ((1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2b))) by CIRCCOMB:11 .= ((InnerVertices (1GateCircStr (<*x,y*>,and2a))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2c)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2b))) by A1, CIRCCOMB:11 .= ({[<*x,y*>,and2a]} \/ (InnerVertices (1GateCircStr (<*y,z*>,and2c)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2b))) by CIRCCOMB:42 .= ({[<*x,y*>,and2a]} \/ {[<*y,z*>,and2c]}) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2b))) by CIRCCOMB:42 .= ({[<*x,y*>,and2a]} \/ {[<*y,z*>,and2c]}) \/ {[<*z,x*>,and2b]} by CIRCCOMB:42 .= {[<*x,y*>,and2a],[<*y,z*>,and2c]} \/ {[<*z,x*>,and2b]} by ENUMSET1:1 .= {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} by ENUMSET1:3 ; hence InnerVertices (GFA2CarryIStr (x,y,z)) = {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} ; ::_thesis: verum end; theorem Th74: :: GFACIRC1:74 for x, y, z being set holds InnerVertices (GFA2CarryStr (x,y,z)) = {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} \/ {(GFA2CarryOutput (x,y,z))} proof let x, y, z be set ; ::_thesis: InnerVertices (GFA2CarryStr (x,y,z)) = {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} \/ {(GFA2CarryOutput (x,y,z))} set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; set f4 = nor3 ; set xy = [<*x,y*>,and2a]; set yz = [<*y,z*>,and2c]; set zx = [<*z,x*>,and2b]; set Cxy = 1GateCircStr (<*x,y*>,and2a); set Cyz = 1GateCircStr (<*y,z*>,and2c); set Czx = 1GateCircStr (<*z,x*>,and2b); set Cxyz = 1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3); A1: 1GateCircStr (<*x,y*>,and2a) tolerates ((1GateCircStr (<*y,z*>,and2c)) +* (1GateCircStr (<*z,x*>,and2b))) +* (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)) by CIRCCOMB:47; 1GateCircStr (<*y,z*>,and2c) tolerates (1GateCircStr (<*z,x*>,and2b)) +* (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)) by CIRCCOMB:47; then A2: InnerVertices ((1GateCircStr (<*y,z*>,and2c)) +* ((1GateCircStr (<*z,x*>,and2b)) +* (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)))) = (InnerVertices (1GateCircStr (<*y,z*>,and2c))) \/ (InnerVertices ((1GateCircStr (<*z,x*>,and2b)) +* (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)))) by CIRCCOMB:11; 1GateCircStr (<*z,x*>,and2b) tolerates 1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3) by CIRCCOMB:47; then A3: InnerVertices ((1GateCircStr (<*z,x*>,and2b)) +* (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3))) = (InnerVertices (1GateCircStr (<*z,x*>,and2b))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3))) by CIRCCOMB:11; thus InnerVertices (GFA2CarryStr (x,y,z)) = InnerVertices (((1GateCircStr (<*x,y*>,and2a)) +* ((1GateCircStr (<*y,z*>,and2c)) +* (1GateCircStr (<*z,x*>,and2b)))) +* (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3))) by CIRCCOMB:6 .= InnerVertices ((1GateCircStr (<*x,y*>,and2a)) +* (((1GateCircStr (<*y,z*>,and2c)) +* (1GateCircStr (<*z,x*>,and2b))) +* (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)))) by CIRCCOMB:6 .= (InnerVertices (1GateCircStr (<*x,y*>,and2a))) \/ (InnerVertices (((1GateCircStr (<*y,z*>,and2c)) +* (1GateCircStr (<*z,x*>,and2b))) +* (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)))) by A1, CIRCCOMB:11 .= (InnerVertices (1GateCircStr (<*x,y*>,and2a))) \/ (InnerVertices ((1GateCircStr (<*y,z*>,and2c)) +* ((1GateCircStr (<*z,x*>,and2b)) +* (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3))))) by CIRCCOMB:6 .= ((InnerVertices (1GateCircStr (<*x,y*>,and2a))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2c)))) \/ ((InnerVertices (1GateCircStr (<*z,x*>,and2b))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)))) by A2, A3, XBOOLE_1:4 .= (((InnerVertices (1GateCircStr (<*x,y*>,and2a))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2c)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2b)))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3))) by XBOOLE_1:4 .= (({[<*x,y*>,and2a]} \/ (InnerVertices (1GateCircStr (<*y,z*>,and2c)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2b)))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3))) by CIRCCOMB:42 .= (({[<*x,y*>,and2a]} \/ {[<*y,z*>,and2c]}) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2b)))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3))) by CIRCCOMB:42 .= (({[<*x,y*>,and2a]} \/ {[<*y,z*>,and2c]}) \/ {[<*z,x*>,and2b]}) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3))) by CIRCCOMB:42 .= ({[<*x,y*>,and2a],[<*y,z*>,and2c]} \/ {[<*z,x*>,and2b]}) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3))) by ENUMSET1:1 .= {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3))) by ENUMSET1:3 .= {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} \/ {(GFA2CarryOutput (x,y,z))} by CIRCCOMB:42 ; ::_thesis: verum end; theorem Th75: :: GFACIRC1:75 for x, y, z being set holds InnerVertices (GFA2CarryStr (x,y,z)) is Relation proof let x, y, z be set ; ::_thesis: InnerVertices (GFA2CarryStr (x,y,z)) is Relation set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; set f4 = nor3 ; set xy = [<*x,y*>,and2a]; set yz = [<*y,z*>,and2c]; set zx = [<*z,x*>,and2b]; set Cxy = 1GateCircStr (<*x,y*>,and2a); set Cyz = 1GateCircStr (<*y,z*>,and2c); set Czx = 1GateCircStr (<*z,x*>,and2b); set Cxyz = 1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3); ( InnerVertices (1GateCircStr (<*x,y*>,and2a)) is Relation & InnerVertices (1GateCircStr (<*y,z*>,and2c)) is Relation ) by FACIRC_1:38; then ( InnerVertices (1GateCircStr (<*z,x*>,and2b)) is Relation & InnerVertices ((1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c))) is Relation ) by FACIRC_1:3, FACIRC_1:38; then ( InnerVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)) is Relation & InnerVertices (GFA2CarryIStr (x,y,z)) is Relation ) by FACIRC_1:3, FACIRC_1:38; hence InnerVertices (GFA2CarryStr (x,y,z)) is Relation by FACIRC_1:3; ::_thesis: verum end; theorem Th76: :: GFACIRC1:76 for x, y, z being set st x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] holds InputVertices (GFA2CarryIStr (x,y,z)) = {x,y,z} proof let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] implies InputVertices (GFA2CarryIStr (x,y,z)) = {x,y,z} ) set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; set xy = [<*x,y*>,and2a]; set yz = [<*y,z*>,and2c]; set zx = [<*z,x*>,and2b]; set Cxy = 1GateCircStr (<*x,y*>,and2a); set Cyz = 1GateCircStr (<*y,z*>,and2c); set Czx = 1GateCircStr (<*z,x*>,and2b); assume that A1: x <> [<*y,z*>,and2c] and A2: ( y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] ) ; ::_thesis: InputVertices (GFA2CarryIStr (x,y,z)) = {x,y,z} A3: not [<*x,y*>,and2a] in {y,z} by A1, A2, Lm1; A4: not [<*z,x*>,and2b] in {x,y,z} by A1, A2, Lm1; A5: y <> [<*y,z*>,and2c] by FACIRC_2:2; A6: ( not z in {[<*x,y*>,and2a],[<*y,z*>,and2c]} & not x in {[<*x,y*>,and2a],[<*y,z*>,and2c]} ) by A1, A2, Lm1; A7: 1GateCircStr (<*x,y*>,and2a) tolerates 1GateCircStr (<*y,z*>,and2c) by CIRCCOMB:47; InputVertices (GFA2CarryIStr (x,y,z)) = ((InputVertices ((1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c)))) \ (InnerVertices (1GateCircStr (<*z,x*>,and2b)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ (InnerVertices ((1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c))))) by CIRCCMB2:5, CIRCCOMB:47 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2a))) \ (InnerVertices (1GateCircStr (<*y,z*>,and2c)))) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2c))) \ (InnerVertices (1GateCircStr (<*x,y*>,and2a))))) \ (InnerVertices (1GateCircStr (<*z,x*>,and2b)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ (InnerVertices ((1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c))))) by CIRCCMB2:5, CIRCCOMB:47 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2a))) \ (InnerVertices (1GateCircStr (<*y,z*>,and2c)))) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2c))) \ (InnerVertices (1GateCircStr (<*x,y*>,and2a))))) \ (InnerVertices (1GateCircStr (<*z,x*>,and2b)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ ((InnerVertices (1GateCircStr (<*x,y*>,and2a))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2c))))) by A7, CIRCCOMB:11 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2a))) \ {[<*y,z*>,and2c]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2c))) \ (InnerVertices (1GateCircStr (<*x,y*>,and2a))))) \ (InnerVertices (1GateCircStr (<*z,x*>,and2b)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ ((InnerVertices (1GateCircStr (<*x,y*>,and2a))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2c))))) by CIRCCOMB:42 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2a))) \ {[<*y,z*>,and2c]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2c))) \ {[<*x,y*>,and2a]})) \ (InnerVertices (1GateCircStr (<*z,x*>,and2b)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ ((InnerVertices (1GateCircStr (<*x,y*>,and2a))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2c))))) by CIRCCOMB:42 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2a))) \ {[<*y,z*>,and2c]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2c))) \ {[<*x,y*>,and2a]})) \ {[<*z,x*>,and2b]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ ((InnerVertices (1GateCircStr (<*x,y*>,and2a))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2c))))) by CIRCCOMB:42 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2a))) \ {[<*y,z*>,and2c]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2c))) \ {[<*x,y*>,and2a]})) \ {[<*z,x*>,and2b]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ ({[<*x,y*>,and2a]} \/ (InnerVertices (1GateCircStr (<*y,z*>,and2c))))) by CIRCCOMB:42 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2a))) \ {[<*y,z*>,and2c]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2c))) \ {[<*x,y*>,and2a]})) \ {[<*z,x*>,and2b]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ ({[<*x,y*>,and2a]} \/ {[<*y,z*>,and2c]})) by CIRCCOMB:42 .= ((({x,y} \ {[<*y,z*>,and2c]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2c))) \ {[<*x,y*>,and2a]})) \ {[<*z,x*>,and2b]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ ({[<*x,y*>,and2a]} \/ {[<*y,z*>,and2c]})) by FACIRC_1:40 .= ((({x,y} \ {[<*y,z*>,and2c]}) \/ ({y,z} \ {[<*x,y*>,and2a]})) \ {[<*z,x*>,and2b]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ ({[<*x,y*>,and2a]} \/ {[<*y,z*>,and2c]})) by FACIRC_1:40 .= ((({x,y} \ {[<*y,z*>,and2c]}) \/ ({y,z} \ {[<*x,y*>,and2a]})) \ {[<*z,x*>,and2b]}) \/ ({z,x} \ ({[<*x,y*>,and2a]} \/ {[<*y,z*>,and2c]})) by FACIRC_1:40 .= ((({x,y} \ {[<*y,z*>,and2c]}) \/ ({y,z} \ {[<*x,y*>,and2a]})) \ {[<*z,x*>,and2b]}) \/ ({z,x} \ {[<*x,y*>,and2a],[<*y,z*>,and2c]}) by ENUMSET1:1 .= (({x,y} \/ ({y,z} \ {[<*x,y*>,and2a]})) \ {[<*z,x*>,and2b]}) \/ ({z,x} \ {[<*x,y*>,and2a],[<*y,z*>,and2c]}) by A1, A5, FACIRC_2:1 .= (({x,y} \/ {y,z}) \ {[<*z,x*>,and2b]}) \/ ({z,x} \ {[<*x,y*>,and2a],[<*y,z*>,and2c]}) by A3, ZFMISC_1:57 .= (({x,y} \/ {y,z}) \ {[<*z,x*>,and2b]}) \/ {z,x} by A6, ZFMISC_1:63 .= ({x,y,y,z} \ {[<*z,x*>,and2b]}) \/ {z,x} by ENUMSET1:5 .= ({y,y,x,z} \ {[<*z,x*>,and2b]}) \/ {z,x} by ENUMSET1:67 .= ({y,x,z} \ {[<*z,x*>,and2b]}) \/ {z,x} by ENUMSET1:31 .= ({x,y,z} \ {[<*z,x*>,and2b]}) \/ {z,x} by ENUMSET1:58 .= {x,y,z} \/ {z,x} by A4, ZFMISC_1:57 .= {x,y,z,z,x} by ENUMSET1:9 .= {x,y,z,z} \/ {x} by ENUMSET1:10 .= {z,z,x,y} \/ {x} by ENUMSET1:73 .= {z,x,y} \/ {x} by ENUMSET1:31 .= {z,x,y,x} by ENUMSET1:6 .= {x,x,y,z} by ENUMSET1:70 .= {x,y,z} by ENUMSET1:31 ; hence InputVertices (GFA2CarryIStr (x,y,z)) = {x,y,z} ; ::_thesis: verum end; theorem Th77: :: GFACIRC1:77 for x, y, z being set st x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] holds InputVertices (GFA2CarryStr (x,y,z)) = {x,y,z} proof let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] implies InputVertices (GFA2CarryStr (x,y,z)) = {x,y,z} ) set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; set f4 = nor3 ; set xy = [<*x,y*>,and2a]; set yz = [<*y,z*>,and2c]; set zx = [<*z,x*>,and2b]; set xyz = [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3]; set S = 1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3); set MI = GFA2CarryIStr (x,y,z); A1: InputVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)) = rng <*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*> by CIRCCOMB:42 .= {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} by FINSEQ_2:128 ; assume A2: ( x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] ) ; ::_thesis: InputVertices (GFA2CarryStr (x,y,z)) = {x,y,z} A3: ( InnerVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)) = {[<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3]} & {x,y,z} \ {[<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3]} = {x,y,z} ) by Lm2, CIRCCOMB:42; A4: {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} \ {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} = {} by XBOOLE_1:37; thus InputVertices (GFA2CarryStr (x,y,z)) = ((InputVertices (GFA2CarryIStr (x,y,z))) \ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)))) \/ ((InputVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3))) \ (InnerVertices (GFA2CarryIStr (x,y,z)))) by CIRCCMB2:5, CIRCCOMB:47 .= {x,y,z} \/ ({[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} \ (InnerVertices (GFA2CarryIStr (x,y,z)))) by A1, A2, A3, Th76 .= {x,y,z} \/ {} by A4, Th73 .= {x,y,z} ; ::_thesis: verum end; theorem :: GFACIRC1:78 for x, y, z being non pair set holds InputVertices (GFA2CarryStr (x,y,z)) is without_pairs proof let x, y, z be non pair set ; ::_thesis: InputVertices (GFA2CarryStr (x,y,z)) is without_pairs set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; set f4 = nor3 ; set xy = [<*x,y*>,and2a]; set yz = [<*y,z*>,and2c]; set zx = [<*z,x*>,and2b]; set Cxy = 1GateCircStr (<*x,y*>,and2a); set Cyz = 1GateCircStr (<*y,z*>,and2c); set Czx = 1GateCircStr (<*z,x*>,and2b); set S = 1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3); set M = GFA2CarryStr (x,y,z); set MI = GFA2CarryIStr (x,y,z); given xx being pair set such that A1: xx in InputVertices (GFA2CarryStr (x,y,z)) ; :: according to FACIRC_1:def_2 ::_thesis: contradiction A2: 1GateCircStr (<*x,y*>,and2a) tolerates 1GateCircStr (<*y,z*>,and2c) by CIRCCOMB:47; A3: ( InnerVertices (1GateCircStr (<*z,x*>,and2b)) = {[<*z,x*>,and2b]} & (1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c)) tolerates 1GateCircStr (<*z,x*>,and2b) ) by CIRCCOMB:42, CIRCCOMB:47; ( InnerVertices (1GateCircStr (<*x,y*>,and2a)) = {[<*x,y*>,and2a]} & InnerVertices (1GateCircStr (<*y,z*>,and2c)) = {[<*y,z*>,and2c]} ) by CIRCCOMB:42; then InnerVertices ((1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c))) = {[<*x,y*>,and2a]} \/ {[<*y,z*>,and2c]} by A2, CIRCCOMB:11; then A4: InnerVertices (GFA2CarryIStr (x,y,z)) = ({[<*x,y*>,and2a]} \/ {[<*y,z*>,and2c]}) \/ {[<*z,x*>,and2b]} by A3, CIRCCOMB:11 .= {[<*x,y*>,and2a],[<*y,z*>,and2c]} \/ {[<*z,x*>,and2b]} by ENUMSET1:1 .= {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} by ENUMSET1:3 ; InputVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)) = {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} by FACIRC_1:42; then A5: (InputVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3))) \ (InnerVertices (GFA2CarryIStr (x,y,z))) = {} by A4, XBOOLE_1:37; ( InputVertices (1GateCircStr (<*x,y*>,and2a)) is without_pairs & InputVertices (1GateCircStr (<*y,z*>,and2c)) is without_pairs ) by FACIRC_1:41; then ( InputVertices (1GateCircStr (<*z,x*>,and2b)) is without_pairs & InputVertices ((1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c))) is without_pairs ) by FACIRC_1:9, FACIRC_1:41; then A6: InputVertices (GFA2CarryIStr (x,y,z)) is without_pairs by FACIRC_1:9; InnerVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)) is Relation by FACIRC_1:38; then InputVertices (GFA2CarryStr (x,y,z)) = (InputVertices (GFA2CarryIStr (x,y,z))) \/ ((InputVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3))) \ (InnerVertices (GFA2CarryIStr (x,y,z)))) by A6, FACIRC_1:6; hence contradiction by A6, A1, A5, FACIRC_1:def_2; ::_thesis: verum end; theorem Th79: :: GFACIRC1:79 for x, y, z being set holds ( x in the carrier of (GFA2CarryStr (x,y,z)) & y in the carrier of (GFA2CarryStr (x,y,z)) & z in the carrier of (GFA2CarryStr (x,y,z)) & [<*x,y*>,and2a] in the carrier of (GFA2CarryStr (x,y,z)) & [<*y,z*>,and2c] in the carrier of (GFA2CarryStr (x,y,z)) & [<*z,x*>,and2b] in the carrier of (GFA2CarryStr (x,y,z)) & [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3] in the carrier of (GFA2CarryStr (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( x in the carrier of (GFA2CarryStr (x,y,z)) & y in the carrier of (GFA2CarryStr (x,y,z)) & z in the carrier of (GFA2CarryStr (x,y,z)) & [<*x,y*>,and2a] in the carrier of (GFA2CarryStr (x,y,z)) & [<*y,z*>,and2c] in the carrier of (GFA2CarryStr (x,y,z)) & [<*z,x*>,and2b] in the carrier of (GFA2CarryStr (x,y,z)) & [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3] in the carrier of (GFA2CarryStr (x,y,z)) ) set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; set f4 = nor3 ; set xy = [<*x,y*>,and2a]; set yz = [<*y,z*>,and2c]; set zx = [<*z,x*>,and2b]; set xyz = [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3]; set Cxy = 1GateCircStr (<*x,y*>,and2a); set Cyz = 1GateCircStr (<*y,z*>,and2c); set Czx = 1GateCircStr (<*z,x*>,and2b); set Cxyz = 1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3); set p = <*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>; z in the carrier of (1GateCircStr (<*z,x*>,and2b)) by FACIRC_1:43; then A1: z in the carrier of (GFA2CarryIStr (x,y,z)) by FACIRC_1:20; [<*z,x*>,and2b] in the carrier of (1GateCircStr (<*z,x*>,and2b)) by FACIRC_1:43; then A2: [<*z,x*>,and2b] in the carrier of (GFA2CarryIStr (x,y,z)) by FACIRC_1:20; y in the carrier of (1GateCircStr (<*x,y*>,and2a)) by FACIRC_1:43; then y in the carrier of ((1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c))) by FACIRC_1:20; then A3: y in the carrier of (GFA2CarryIStr (x,y,z)) by FACIRC_1:20; ( the carrier of (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)) = (rng <*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>) \/ {[<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3]} & [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3] in {[<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3]} ) by CIRCCOMB:def_6, TARSKI:def_1; then A4: [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3] in the carrier of (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)) by XBOOLE_0:def_3; [<*y,z*>,and2c] in the carrier of (1GateCircStr (<*y,z*>,and2c)) by FACIRC_1:43; then [<*y,z*>,and2c] in the carrier of ((1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c))) by FACIRC_1:20; then A5: [<*y,z*>,and2c] in the carrier of (GFA2CarryIStr (x,y,z)) by FACIRC_1:20; [<*x,y*>,and2a] in the carrier of (1GateCircStr (<*x,y*>,and2a)) by FACIRC_1:43; then [<*x,y*>,and2a] in the carrier of ((1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c))) by FACIRC_1:20; then A6: [<*x,y*>,and2a] in the carrier of (GFA2CarryIStr (x,y,z)) by FACIRC_1:20; x in the carrier of (1GateCircStr (<*z,x*>,and2b)) by FACIRC_1:43; then x in the carrier of (GFA2CarryIStr (x,y,z)) by FACIRC_1:20; hence ( x in the carrier of (GFA2CarryStr (x,y,z)) & y in the carrier of (GFA2CarryStr (x,y,z)) & z in the carrier of (GFA2CarryStr (x,y,z)) & [<*x,y*>,and2a] in the carrier of (GFA2CarryStr (x,y,z)) & [<*y,z*>,and2c] in the carrier of (GFA2CarryStr (x,y,z)) & [<*z,x*>,and2b] in the carrier of (GFA2CarryStr (x,y,z)) & [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3] in the carrier of (GFA2CarryStr (x,y,z)) ) by A3, A1, A6, A5, A2, A4, FACIRC_1:20; ::_thesis: verum end; theorem Th80: :: GFACIRC1:80 for x, y, z being set holds ( [<*x,y*>,and2a] in InnerVertices (GFA2CarryStr (x,y,z)) & [<*y,z*>,and2c] in InnerVertices (GFA2CarryStr (x,y,z)) & [<*z,x*>,and2b] in InnerVertices (GFA2CarryStr (x,y,z)) & GFA2CarryOutput (x,y,z) in InnerVertices (GFA2CarryStr (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( [<*x,y*>,and2a] in InnerVertices (GFA2CarryStr (x,y,z)) & [<*y,z*>,and2c] in InnerVertices (GFA2CarryStr (x,y,z)) & [<*z,x*>,and2b] in InnerVertices (GFA2CarryStr (x,y,z)) & GFA2CarryOutput (x,y,z) in InnerVertices (GFA2CarryStr (x,y,z)) ) set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; set xy = [<*x,y*>,and2a]; set yz = [<*y,z*>,and2c]; set zx = [<*z,x*>,and2b]; InnerVertices (GFA2CarryStr (x,y,z)) = {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} \/ {(GFA2CarryOutput (x,y,z))} by Th74 .= {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b],(GFA2CarryOutput (x,y,z))} by ENUMSET1:6 ; hence ( [<*x,y*>,and2a] in InnerVertices (GFA2CarryStr (x,y,z)) & [<*y,z*>,and2c] in InnerVertices (GFA2CarryStr (x,y,z)) & [<*z,x*>,and2b] in InnerVertices (GFA2CarryStr (x,y,z)) & GFA2CarryOutput (x,y,z) in InnerVertices (GFA2CarryStr (x,y,z)) ) by ENUMSET1:def_2; ::_thesis: verum end; theorem Th81: :: GFACIRC1:81 for x, y, z being set st x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] holds ( x in InputVertices (GFA2CarryStr (x,y,z)) & y in InputVertices (GFA2CarryStr (x,y,z)) & z in InputVertices (GFA2CarryStr (x,y,z)) ) proof set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] implies ( x in InputVertices (GFA2CarryStr (x,y,z)) & y in InputVertices (GFA2CarryStr (x,y,z)) & z in InputVertices (GFA2CarryStr (x,y,z)) ) ) assume ( x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] ) ; ::_thesis: ( x in InputVertices (GFA2CarryStr (x,y,z)) & y in InputVertices (GFA2CarryStr (x,y,z)) & z in InputVertices (GFA2CarryStr (x,y,z)) ) then InputVertices (GFA2CarryStr (x,y,z)) = {x,y,z} by Th77; hence ( x in InputVertices (GFA2CarryStr (x,y,z)) & y in InputVertices (GFA2CarryStr (x,y,z)) & z in InputVertices (GFA2CarryStr (x,y,z)) ) by ENUMSET1:def_1; ::_thesis: verum end; theorem Th82: :: GFACIRC1:82 for x, y, z being non pair set holds InputVertices (GFA2CarryStr (x,y,z)) = {x,y,z} proof let x, y, z be non pair set ; ::_thesis: InputVertices (GFA2CarryStr (x,y,z)) = {x,y,z} set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; set f4 = nor3 ; set xy = [<*x,y*>,and2a]; set yz = [<*y,z*>,and2c]; set zx = [<*z,x*>,and2b]; set Cxy = 1GateCircStr (<*x,y*>,and2a); set Cyz = 1GateCircStr (<*y,z*>,and2c); set Czx = 1GateCircStr (<*z,x*>,and2b); set M = GFA2CarryStr (x,y,z); set MI = GFA2CarryIStr (x,y,z); set S = 1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3); A1: ( InputVertices (1GateCircStr (<*x,y*>,and2a)) = {x,y} & InputVertices (1GateCircStr (<*y,z*>,and2c)) = {y,z} ) by FACIRC_1:40; A2: InputVertices (1GateCircStr (<*z,x*>,and2b)) = {z,x} by FACIRC_1:40; A3: InputVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)) = {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} by FACIRC_1:42; A4: InnerVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3)) is Relation by FACIRC_1:38; A5: ( InnerVertices (1GateCircStr (<*x,y*>,and2a)) = {[<*x,y*>,and2a]} & InnerVertices (1GateCircStr (<*y,z*>,and2c)) = {[<*y,z*>,and2c]} ) by CIRCCOMB:42; 1GateCircStr (<*x,y*>,and2a) tolerates 1GateCircStr (<*y,z*>,and2c) by CIRCCOMB:47; then A6: ( InnerVertices (1GateCircStr (<*z,x*>,and2b)) = {[<*z,x*>,and2b]} & InnerVertices ((1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c))) = {[<*x,y*>,and2a]} \/ {[<*y,z*>,and2c]} ) by A5, CIRCCOMB:11, CIRCCOMB:42; (1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c)) tolerates 1GateCircStr (<*z,x*>,and2b) by CIRCCOMB:47; then InnerVertices (GFA2CarryIStr (x,y,z)) = ({[<*x,y*>,and2a]} \/ {[<*y,z*>,and2c]}) \/ {[<*z,x*>,and2b]} by A6, CIRCCOMB:11 .= {[<*x,y*>,and2a],[<*y,z*>,and2c]} \/ {[<*z,x*>,and2b]} by ENUMSET1:1 .= {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} by ENUMSET1:3 ; then A7: (InputVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3))) \ (InnerVertices (GFA2CarryIStr (x,y,z))) = {} by A3, XBOOLE_1:37; A8: ( InputVertices (1GateCircStr (<*x,y*>,and2a)) is without_pairs & InputVertices (1GateCircStr (<*y,z*>,and2c)) is without_pairs ) by FACIRC_1:41; then A9: ( InputVertices (1GateCircStr (<*z,x*>,and2b)) is without_pairs & InputVertices ((1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c))) is without_pairs ) by FACIRC_1:9, FACIRC_1:41; then InputVertices (GFA2CarryIStr (x,y,z)) is without_pairs by FACIRC_1:9; then InputVertices (GFA2CarryStr (x,y,z)) = (InputVertices (GFA2CarryIStr (x,y,z))) \/ ((InputVertices (1GateCircStr (<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3))) \ (InnerVertices (GFA2CarryIStr (x,y,z)))) by A4, FACIRC_1:6; hence InputVertices (GFA2CarryStr (x,y,z)) = (InputVertices ((1GateCircStr (<*x,y*>,and2a)) +* (1GateCircStr (<*y,z*>,and2c)))) \/ (InputVertices (1GateCircStr (<*z,x*>,and2b))) by A9, A6, A7, FACIRC_1:7 .= ((InputVertices (1GateCircStr (<*x,y*>,and2a))) \/ (InputVertices (1GateCircStr (<*y,z*>,and2c)))) \/ (InputVertices (1GateCircStr (<*z,x*>,and2b))) by A8, A5, FACIRC_1:7 .= {x,y,y,z} \/ {z,x} by A1, A2, ENUMSET1:5 .= {y,y,x,z} \/ {z,x} by ENUMSET1:67 .= {y,x,z} \/ {z,x} by ENUMSET1:31 .= {x,y,z} \/ {z,x} by ENUMSET1:58 .= {x,y,z} \/ ({z} \/ {x}) by ENUMSET1:1 .= ({x,y,z} \/ {z}) \/ {x} by XBOOLE_1:4 .= ({z,x,y} \/ {z}) \/ {x} by ENUMSET1:59 .= {z,z,x,y} \/ {x} by ENUMSET1:4 .= {z,x,y} \/ {x} by ENUMSET1:31 .= {x,y,z} \/ {x} by ENUMSET1:59 .= {x,x,y,z} by ENUMSET1:4 .= {x,y,z} by ENUMSET1:31 ; ::_thesis: verum end; theorem Th83: :: GFACIRC1:83 for x, y, z being set for s being State of (GFA2CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,and2a] = ('not' a1) '&' a2 & (Following s) . [<*y,z*>,and2c] = a2 '&' ('not' a3) & (Following s) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) proof let x, y, z be set ; ::_thesis: for s being State of (GFA2CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,and2a] = ('not' a1) '&' a2 & (Following s) . [<*y,z*>,and2c] = a2 '&' ('not' a3) & (Following s) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; let s be State of (GFA2CarryCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,and2a] = ('not' a1) '&' a2 & (Following s) . [<*y,z*>,and2c] = a2 '&' ('not' a3) & (Following s) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) set xy = [<*x,y*>,and2a]; set yz = [<*y,z*>,and2c]; set zx = [<*z,x*>,and2b]; let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies ( (Following s) . [<*x,y*>,and2a] = ('not' a1) '&' a2 & (Following s) . [<*y,z*>,and2c] = a2 '&' ('not' a3) & (Following s) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) ) assume that A1: a1 = s . x and A2: a2 = s . y and A3: a3 = s . z ; ::_thesis: ( (Following s) . [<*x,y*>,and2a] = ('not' a1) '&' a2 & (Following s) . [<*y,z*>,and2c] = a2 '&' ('not' a3) & (Following s) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) set S = GFA2CarryStr (x,y,z); A4: InnerVertices (GFA2CarryStr (x,y,z)) = the carrier' of (GFA2CarryStr (x,y,z)) by FACIRC_1:37; A5: y in the carrier of (GFA2CarryStr (x,y,z)) by Th79; A6: x in the carrier of (GFA2CarryStr (x,y,z)) by Th79; A7: dom s = the carrier of (GFA2CarryStr (x,y,z)) by CIRCUIT1:3; [<*x,y*>,and2a] in InnerVertices (GFA2CarryStr (x,y,z)) by Th80; hence (Following s) . [<*x,y*>,and2a] = and2a . (s * <*x,y*>) by A4, FACIRC_1:35 .= and2a . <*a1,a2*> by A1, A2, A7, A6, A5, FINSEQ_2:125 .= ('not' a1) '&' a2 by TWOSCOMP:def_2 ; ::_thesis: ( (Following s) . [<*y,z*>,and2c] = a2 '&' ('not' a3) & (Following s) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) A8: z in the carrier of (GFA2CarryStr (x,y,z)) by Th79; [<*y,z*>,and2c] in InnerVertices (GFA2CarryStr (x,y,z)) by Th80; hence (Following s) . [<*y,z*>,and2c] = and2c . (s * <*y,z*>) by A4, FACIRC_1:35 .= and2c . <*a2,a3*> by A2, A3, A7, A5, A8, FINSEQ_2:125 .= a2 '&' ('not' a3) by Def3 ; ::_thesis: (Following s) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) [<*z,x*>,and2b] in InnerVertices (GFA2CarryStr (x,y,z)) by Th80; hence (Following s) . [<*z,x*>,and2b] = and2b . (s * <*z,x*>) by A4, FACIRC_1:35 .= and2b . <*a3,a1*> by A1, A3, A7, A6, A8, FINSEQ_2:125 .= ('not' a3) '&' ('not' a1) by TWOSCOMP:def_3 ; ::_thesis: verum end; theorem Th84: :: GFACIRC1:84 for x, y, z being set for s being State of (GFA2CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . [<*x,y*>,and2a] & a2 = s . [<*y,z*>,and2c] & a3 = s . [<*z,x*>,and2b] holds (Following s) . (GFA2CarryOutput (x,y,z)) = 'not' ((a1 'or' a2) 'or' a3) proof let x, y, z be set ; ::_thesis: for s being State of (GFA2CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . [<*x,y*>,and2a] & a2 = s . [<*y,z*>,and2c] & a3 = s . [<*z,x*>,and2b] holds (Following s) . (GFA2CarryOutput (x,y,z)) = 'not' ((a1 'or' a2) 'or' a3) set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; set f4 = nor3 ; let s be State of (GFA2CarryCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . [<*x,y*>,and2a] & a2 = s . [<*y,z*>,and2c] & a3 = s . [<*z,x*>,and2b] holds (Following s) . (GFA2CarryOutput (x,y,z)) = 'not' ((a1 'or' a2) 'or' a3) set xy = [<*x,y*>,and2a]; set yz = [<*y,z*>,and2c]; set zx = [<*z,x*>,and2b]; let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . [<*x,y*>,and2a] & a2 = s . [<*y,z*>,and2c] & a3 = s . [<*z,x*>,and2b] implies (Following s) . (GFA2CarryOutput (x,y,z)) = 'not' ((a1 'or' a2) 'or' a3) ) assume A1: ( a1 = s . [<*x,y*>,and2a] & a2 = s . [<*y,z*>,and2c] & a3 = s . [<*z,x*>,and2b] ) ; ::_thesis: (Following s) . (GFA2CarryOutput (x,y,z)) = 'not' ((a1 'or' a2) 'or' a3) set S = GFA2CarryStr (x,y,z); reconsider xy = [<*x,y*>,and2a], yz = [<*y,z*>,and2c], zx = [<*z,x*>,and2b] as Element of InnerVertices (GFA2CarryStr (x,y,z)) by Th80; A2: dom s = the carrier of (GFA2CarryStr (x,y,z)) by CIRCUIT1:3; InnerVertices (GFA2CarryStr (x,y,z)) = the carrier' of (GFA2CarryStr (x,y,z)) by FACIRC_1:37; hence (Following s) . (GFA2CarryOutput (x,y,z)) = nor3 . (s * <*xy,yz,zx*>) by FACIRC_1:35 .= nor3 . <*a1,a2,a3*> by A1, A2, FINSEQ_2:126 .= 'not' ((a1 'or' a2) 'or' a3) by TWOSCOMP:def_28 ; ::_thesis: verum end; theorem Th85: :: GFACIRC1:85 for x, y, z being set st x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] holds for s being State of (GFA2CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA2CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' a2) 'or' (a2 '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) & (Following (s,2)) . [<*x,y*>,and2a] = ('not' a1) '&' a2 & (Following (s,2)) . [<*y,z*>,and2c] = a2 '&' ('not' a3) & (Following (s,2)) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) proof set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] implies for s being State of (GFA2CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA2CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' a2) 'or' (a2 '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) & (Following (s,2)) . [<*x,y*>,and2a] = ('not' a1) '&' a2 & (Following (s,2)) . [<*y,z*>,and2c] = a2 '&' ('not' a3) & (Following (s,2)) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) ) assume A1: ( x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] ) ; ::_thesis: for s being State of (GFA2CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA2CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' a2) 'or' (a2 '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) & (Following (s,2)) . [<*x,y*>,and2a] = ('not' a1) '&' a2 & (Following (s,2)) . [<*y,z*>,and2c] = a2 '&' ('not' a3) & (Following (s,2)) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) set S = GFA2CarryStr (x,y,z); reconsider x9 = x, y9 = y, z9 = z as Vertex of (GFA2CarryStr (x,y,z)) by Th79; let s be State of (GFA2CarryCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA2CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' a2) 'or' (a2 '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) & (Following (s,2)) . [<*x,y*>,and2a] = ('not' a1) '&' a2 & (Following (s,2)) . [<*y,z*>,and2c] = a2 '&' ('not' a3) & (Following (s,2)) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) y in InputVertices (GFA2CarryStr (x,y,z)) by A1, Th81; then A2: (Following s) . y9 = s . y by CIRCUIT2:def_5; z in InputVertices (GFA2CarryStr (x,y,z)) by A1, Th81; then A3: (Following s) . z9 = s . z by CIRCUIT2:def_5; set xy = [<*x,y*>,and2a]; set yz = [<*y,z*>,and2c]; set zx = [<*z,x*>,and2b]; A4: Following (s,2) = Following (Following s) by FACIRC_1:15; let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies ( (Following (s,2)) . (GFA2CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' a2) 'or' (a2 '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) & (Following (s,2)) . [<*x,y*>,and2a] = ('not' a1) '&' a2 & (Following (s,2)) . [<*y,z*>,and2c] = a2 '&' ('not' a3) & (Following (s,2)) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) ) assume A5: ( a1 = s . x & a2 = s . y & a3 = s . z ) ; ::_thesis: ( (Following (s,2)) . (GFA2CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' a2) 'or' (a2 '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) & (Following (s,2)) . [<*x,y*>,and2a] = ('not' a1) '&' a2 & (Following (s,2)) . [<*y,z*>,and2c] = a2 '&' ('not' a3) & (Following (s,2)) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) A6: (Following s) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) by A5, Th83; ( (Following s) . [<*x,y*>,and2a] = ('not' a1) '&' a2 & (Following s) . [<*y,z*>,and2c] = a2 '&' ('not' a3) ) by A5, Th83; hence (Following (s,2)) . (GFA2CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' a2) 'or' (a2 '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) by A4, A6, Th84; ::_thesis: ( (Following (s,2)) . [<*x,y*>,and2a] = ('not' a1) '&' a2 & (Following (s,2)) . [<*y,z*>,and2c] = a2 '&' ('not' a3) & (Following (s,2)) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) x in InputVertices (GFA2CarryStr (x,y,z)) by A1, Th81; then (Following s) . x9 = s . x by CIRCUIT2:def_5; hence ( (Following (s,2)) . [<*x,y*>,and2a] = ('not' a1) '&' a2 & (Following (s,2)) . [<*y,z*>,and2c] = a2 '&' ('not' a3) & (Following (s,2)) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) by A5, A2, A3, A4, Th83; ::_thesis: verum end; theorem Th86: :: GFACIRC1:86 for x, y, z being set st x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] holds for s being State of (GFA2CarryCirc (x,y,z)) holds Following (s,2) is stable proof set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] implies for s being State of (GFA2CarryCirc (x,y,z)) holds Following (s,2) is stable ) assume A1: ( x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] ) ; ::_thesis: for s being State of (GFA2CarryCirc (x,y,z)) holds Following (s,2) is stable set S = GFA2CarryStr (x,y,z); reconsider xx = x, yy = y, zz = z as Vertex of (GFA2CarryStr (x,y,z)) by Th79; let s be State of (GFA2CarryCirc (x,y,z)); ::_thesis: Following (s,2) is stable set a1 = s . xx; set a2 = s . yy; set a3 = s . zz; set ffs = Following (s,2); set fffs = Following (Following (s,2)); set xy = [<*x,y*>,and2a]; set yz = [<*y,z*>,and2c]; set zx = [<*z,x*>,and2b]; A2: Following (s,2) = Following (Following s) by FACIRC_1:15; A3: z in InputVertices (GFA2CarryStr (x,y,z)) by A1, Th81; then (Following s) . z = s . zz by CIRCUIT2:def_5; then A4: (Following (s,2)) . z = s . zz by A2, A3, CIRCUIT2:def_5; A5: y in InputVertices (GFA2CarryStr (x,y,z)) by A1, Th81; then (Following s) . y = s . yy by CIRCUIT2:def_5; then A6: (Following (s,2)) . y = s . yy by A2, A5, CIRCUIT2:def_5; A7: x in InputVertices (GFA2CarryStr (x,y,z)) by A1, Th81; then (Following s) . x = s . xx by CIRCUIT2:def_5; then A8: (Following (s,2)) . x = s . xx by A2, A7, CIRCUIT2:def_5; s . zz = s . z ; then A9: (Following (s,2)) . [<*x,y*>,and2a] = ('not' (s . xx)) '&' (s . yy) by A1, Th85; s . yy = s . y ; then A10: (Following (s,2)) . [<*z,x*>,and2b] = ('not' (s . xx)) '&' ('not' (s . zz)) by A1, Th85; s . xx = s . x ; then A11: (Following (s,2)) . [<*y,z*>,and2c] = (s . yy) '&' ('not' (s . zz)) by A1, Th85; A12: (Following (s,2)) . (GFA2CarryOutput (x,y,z)) = 'not' (((('not' (s . xx)) '&' (s . yy)) 'or' ((s . yy) '&' ('not' (s . zz)))) 'or' (('not' (s . zz)) '&' ('not' (s . xx)))) by A1, Th85; A13: now__::_thesis:_for_a_being_set_st_a_in_the_carrier_of_(GFA2CarryStr_(x,y,z))_holds_ (Following_(s,2))_._a_=_(Following_(Following_(s,2)))_._a let a be set ; ::_thesis: ( a in the carrier of (GFA2CarryStr (x,y,z)) implies (Following (s,2)) . a = (Following (Following (s,2))) . a ) assume A14: a in the carrier of (GFA2CarryStr (x,y,z)) ; ::_thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a then reconsider v = a as Vertex of (GFA2CarryStr (x,y,z)) ; A15: v in (InputVertices (GFA2CarryStr (x,y,z))) \/ (InnerVertices (GFA2CarryStr (x,y,z))) by A14, XBOOLE_1:45; thus (Following (s,2)) . a = (Following (Following (s,2))) . a ::_thesis: verum proof percases ( v in InputVertices (GFA2CarryStr (x,y,z)) or v in InnerVertices (GFA2CarryStr (x,y,z)) ) by A15, XBOOLE_0:def_3; suppose v in InputVertices (GFA2CarryStr (x,y,z)) ; ::_thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a hence (Following (s,2)) . a = (Following (Following (s,2))) . a by CIRCUIT2:def_5; ::_thesis: verum end; suppose v in InnerVertices (GFA2CarryStr (x,y,z)) ; ::_thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a then v in {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} \/ {(GFA2CarryOutput (x,y,z))} by Th74; then ( v in {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} or v in {(GFA2CarryOutput (x,y,z))} ) by XBOOLE_0:def_3; then ( v = [<*x,y*>,and2a] or v = [<*y,z*>,and2c] or v = [<*z,x*>,and2b] or v = GFA2CarryOutput (x,y,z) ) by ENUMSET1:def_1, TARSKI:def_1; hence (Following (s,2)) . a = (Following (Following (s,2))) . a by A12, A9, A11, A10, A8, A6, A4, Th83, Th84; ::_thesis: verum end; end; end; end; ( dom (Following (Following (s,2))) = the carrier of (GFA2CarryStr (x,y,z)) & dom (Following (s,2)) = the carrier of (GFA2CarryStr (x,y,z)) ) by CIRCUIT1:3; hence Following (s,2) = Following (Following (s,2)) by A13, FUNCT_1:2; :: according to CIRCUIT2:def_6 ::_thesis: verum end; definition let x, y, z be set ; func GFA2AdderStr (x,y,z) -> non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: GFACIRC1:def 34 2GatesCircStr (x,y,z,xor2c); coherence 2GatesCircStr (x,y,z,xor2c) is non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign ; end; :: deftheorem defines GFA2AdderStr GFACIRC1:def_34_:_ for x, y, z being set holds GFA2AdderStr (x,y,z) = 2GatesCircStr (x,y,z,xor2c); definition let x, y, z be set ; func GFA2AdderCirc (x,y,z) -> strict gate`2=den Boolean Circuit of GFA2AdderStr (x,y,z) equals :: GFACIRC1:def 35 2GatesCircuit (x,y,z,xor2c); coherence 2GatesCircuit (x,y,z,xor2c) is strict gate`2=den Boolean Circuit of GFA2AdderStr (x,y,z) ; end; :: deftheorem defines GFA2AdderCirc GFACIRC1:def_35_:_ for x, y, z being set holds GFA2AdderCirc (x,y,z) = 2GatesCircuit (x,y,z,xor2c); definition let x, y, z be set ; func GFA2AdderOutput (x,y,z) -> Element of InnerVertices (GFA2AdderStr (x,y,z)) equals :: GFACIRC1:def 36 2GatesCircOutput (x,y,z,xor2c); coherence 2GatesCircOutput (x,y,z,xor2c) is Element of InnerVertices (GFA2AdderStr (x,y,z)) ; end; :: deftheorem defines GFA2AdderOutput GFACIRC1:def_36_:_ for x, y, z being set holds GFA2AdderOutput (x,y,z) = 2GatesCircOutput (x,y,z,xor2c); theorem Th87: :: GFACIRC1:87 for x, y, z being set holds InnerVertices (GFA2AdderStr (x,y,z)) = {[<*x,y*>,xor2c]} \/ {(GFA2AdderOutput (x,y,z))} proof let x, y, z be set ; ::_thesis: InnerVertices (GFA2AdderStr (x,y,z)) = {[<*x,y*>,xor2c]} \/ {(GFA2AdderOutput (x,y,z))} GFA2AdderOutput (x,y,z) = GFA1AdderOutput (x,y,z) ; hence InnerVertices (GFA2AdderStr (x,y,z)) = {[<*x,y*>,xor2c]} \/ {(GFA2AdderOutput (x,y,z))} by Th55; ::_thesis: verum end; theorem :: GFACIRC1:88 for x, y, z being set holds ( x in the carrier of (GFA2AdderStr (x,y,z)) & y in the carrier of (GFA2AdderStr (x,y,z)) & z in the carrier of (GFA2AdderStr (x,y,z)) & [<*x,y*>,xor2c] in the carrier of (GFA2AdderStr (x,y,z)) & [<*[<*x,y*>,xor2c],z*>,xor2c] in the carrier of (GFA2AdderStr (x,y,z)) ) by FACIRC_1:60, FACIRC_1:61; theorem :: GFACIRC1:89 for x, y, z being set holds ( [<*x,y*>,xor2c] in InnerVertices (GFA2AdderStr (x,y,z)) & GFA2AdderOutput (x,y,z) in InnerVertices (GFA2AdderStr (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( [<*x,y*>,xor2c] in InnerVertices (GFA2AdderStr (x,y,z)) & GFA2AdderOutput (x,y,z) in InnerVertices (GFA2AdderStr (x,y,z)) ) set S1 = GFA1AdderStr (x,y,z); GFA2AdderStr (x,y,z) = GFA1AdderStr (x,y,z) ; hence ( [<*x,y*>,xor2c] in InnerVertices (GFA2AdderStr (x,y,z)) & GFA2AdderOutput (x,y,z) in InnerVertices (GFA2AdderStr (x,y,z)) ) by Th57; ::_thesis: verum end; theorem :: GFACIRC1:90 for x, y, z being set st z <> [<*x,y*>,xor2c] holds ( x in InputVertices (GFA2AdderStr (x,y,z)) & y in InputVertices (GFA2AdderStr (x,y,z)) & z in InputVertices (GFA2AdderStr (x,y,z)) ) proof set f = xor2c ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2c] implies ( x in InputVertices (GFA2AdderStr (x,y,z)) & y in InputVertices (GFA2AdderStr (x,y,z)) & z in InputVertices (GFA2AdderStr (x,y,z)) ) ) assume A1: z <> [<*x,y*>,xor2c] ; ::_thesis: ( x in InputVertices (GFA2AdderStr (x,y,z)) & y in InputVertices (GFA2AdderStr (x,y,z)) & z in InputVertices (GFA2AdderStr (x,y,z)) ) set S1 = GFA1AdderStr (x,y,z); GFA2AdderStr (x,y,z) = GFA1AdderStr (x,y,z) ; hence ( x in InputVertices (GFA2AdderStr (x,y,z)) & y in InputVertices (GFA2AdderStr (x,y,z)) & z in InputVertices (GFA2AdderStr (x,y,z)) ) by A1, Th58; ::_thesis: verum end; theorem :: GFACIRC1:91 for x, y, z being set st z <> [<*x,y*>,xor2c] holds for s being State of (GFA2AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) proof set f = xor2c ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2c] implies for s being State of (GFA2AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) ) assume A1: z <> [<*x,y*>,xor2c] ; ::_thesis: for s being State of (GFA2AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) set A1 = GFA1AdderCirc (x,y,z); GFA2AdderCirc (x,y,z) = GFA1AdderCirc (x,y,z) ; hence for s being State of (GFA2AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) by A1, Th59; ::_thesis: verum end; theorem :: GFACIRC1:92 for x, y, z being set st z <> [<*x,y*>,xor2c] holds for s being State of (GFA2AdderCirc (x,y,z)) for a1a2, a1, a2, a3 being Element of BOOLEAN st a1a2 = s . [<*x,y*>,xor2c] & a1 = s . x & a2 = s . y & a3 = s . z holds (Following s) . (GFA2AdderOutput (x,y,z)) = a1a2 'xor' ('not' a3) proof set f = xor2c ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2c] implies for s being State of (GFA2AdderCirc (x,y,z)) for a1a2, a1, a2, a3 being Element of BOOLEAN st a1a2 = s . [<*x,y*>,xor2c] & a1 = s . x & a2 = s . y & a3 = s . z holds (Following s) . (GFA2AdderOutput (x,y,z)) = a1a2 'xor' ('not' a3) ) assume A1: z <> [<*x,y*>,xor2c] ; ::_thesis: for s being State of (GFA2AdderCirc (x,y,z)) for a1a2, a1, a2, a3 being Element of BOOLEAN st a1a2 = s . [<*x,y*>,xor2c] & a1 = s . x & a2 = s . y & a3 = s . z holds (Following s) . (GFA2AdderOutput (x,y,z)) = a1a2 'xor' ('not' a3) set O1 = GFA1AdderOutput (x,y,z); set O2 = GFA2AdderOutput (x,y,z); set A1 = GFA1AdderCirc (x,y,z); set A2 = GFA2AdderCirc (x,y,z); ( GFA2AdderCirc (x,y,z) = GFA1AdderCirc (x,y,z) & GFA2AdderOutput (x,y,z) = GFA1AdderOutput (x,y,z) ) ; hence for s being State of (GFA2AdderCirc (x,y,z)) for a1a2, a1, a2, a3 being Element of BOOLEAN st a1a2 = s . [<*x,y*>,xor2c] & a1 = s . x & a2 = s . y & a3 = s . z holds (Following s) . (GFA2AdderOutput (x,y,z)) = a1a2 'xor' ('not' a3) by A1, Th60; ::_thesis: verum end; theorem Th93: :: GFACIRC1:93 for x, y, z being set st z <> [<*x,y*>,xor2c] holds for s being State of (GFA2AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA2AdderOutput (x,y,z)) = (a1 'xor' ('not' a2)) 'xor' ('not' a3) & (Following (s,2)) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) proof set f = xor2c ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2c] implies for s being State of (GFA2AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA2AdderOutput (x,y,z)) = (a1 'xor' ('not' a2)) 'xor' ('not' a3) & (Following (s,2)) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) ) assume A1: z <> [<*x,y*>,xor2c] ; ::_thesis: for s being State of (GFA2AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA2AdderOutput (x,y,z)) = (a1 'xor' ('not' a2)) 'xor' ('not' a3) & (Following (s,2)) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) set O1 = GFA1AdderOutput (x,y,z); set O2 = GFA2AdderOutput (x,y,z); set A1 = GFA1AdderCirc (x,y,z); set A2 = GFA2AdderCirc (x,y,z); ( GFA2AdderCirc (x,y,z) = GFA1AdderCirc (x,y,z) & GFA2AdderOutput (x,y,z) = GFA1AdderOutput (x,y,z) ) ; hence for s being State of (GFA2AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA2AdderOutput (x,y,z)) = (a1 'xor' ('not' a2)) 'xor' ('not' a3) & (Following (s,2)) . [<*x,y*>,xor2c] = a1 'xor' ('not' a2) & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) by A1, Th61; ::_thesis: verum end; theorem Th94: :: GFACIRC1:94 for x, y, z being set st z <> [<*x,y*>,xor2c] holds for s being State of (GFA2AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds (Following (s,2)) . (GFA2AdderOutput (x,y,z)) = (('not' a1) 'xor' a2) 'xor' ('not' a3) proof set f = xor2c ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2c] implies for s being State of (GFA2AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds (Following (s,2)) . (GFA2AdderOutput (x,y,z)) = (('not' a1) 'xor' a2) 'xor' ('not' a3) ) assume A1: z <> [<*x,y*>,xor2c] ; ::_thesis: for s being State of (GFA2AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds (Following (s,2)) . (GFA2AdderOutput (x,y,z)) = (('not' a1) 'xor' a2) 'xor' ('not' a3) set A = GFA2AdderCirc (x,y,z); let s be State of (GFA2AdderCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds (Following (s,2)) . (GFA2AdderOutput (x,y,z)) = (('not' a1) 'xor' a2) 'xor' ('not' a3) let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies (Following (s,2)) . (GFA2AdderOutput (x,y,z)) = (('not' a1) 'xor' a2) 'xor' ('not' a3) ) assume ( a1 = s . x & a2 = s . y & a3 = s . z ) ; ::_thesis: (Following (s,2)) . (GFA2AdderOutput (x,y,z)) = (('not' a1) 'xor' a2) 'xor' ('not' a3) hence (Following (s,2)) . (GFA2AdderOutput (x,y,z)) = (a1 'xor' ('not' a2)) 'xor' ('not' a3) by A1, Th93 .= (('not' a1) 'xor' a2) 'xor' ('not' a3) ; ::_thesis: verum end; definition let x, y, z be set ; func BitGFA2Str (x,y,z) -> non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: GFACIRC1:def 37 (GFA2AdderStr (x,y,z)) +* (GFA2CarryStr (x,y,z)); coherence (GFA2AdderStr (x,y,z)) +* (GFA2CarryStr (x,y,z)) is non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign ; end; :: deftheorem defines BitGFA2Str GFACIRC1:def_37_:_ for x, y, z being set holds BitGFA2Str (x,y,z) = (GFA2AdderStr (x,y,z)) +* (GFA2CarryStr (x,y,z)); definition let x, y, z be set ; func BitGFA2Circ (x,y,z) -> strict gate`2=den Boolean Circuit of BitGFA2Str (x,y,z) equals :: GFACIRC1:def 38 (GFA2AdderCirc (x,y,z)) +* (GFA2CarryCirc (x,y,z)); coherence (GFA2AdderCirc (x,y,z)) +* (GFA2CarryCirc (x,y,z)) is strict gate`2=den Boolean Circuit of BitGFA2Str (x,y,z) ; end; :: deftheorem defines BitGFA2Circ GFACIRC1:def_38_:_ for x, y, z being set holds BitGFA2Circ (x,y,z) = (GFA2AdderCirc (x,y,z)) +* (GFA2CarryCirc (x,y,z)); theorem Th95: :: GFACIRC1:95 for x, y, z being set holds InnerVertices (BitGFA2Str (x,y,z)) = (({[<*x,y*>,xor2c]} \/ {(GFA2AdderOutput (x,y,z))}) \/ {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]}) \/ {(GFA2CarryOutput (x,y,z))} proof let x, y, z be set ; ::_thesis: InnerVertices (BitGFA2Str (x,y,z)) = (({[<*x,y*>,xor2c]} \/ {(GFA2AdderOutput (x,y,z))}) \/ {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]}) \/ {(GFA2CarryOutput (x,y,z))} set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; set f0 = xor2c ; set xyf0 = [<*x,y*>,xor2c]; set xyf1 = [<*x,y*>,and2a]; set yzf2 = [<*y,z*>,and2c]; set zxf3 = [<*z,x*>,and2b]; set S = BitGFA2Str (x,y,z); set S1 = GFA2AdderStr (x,y,z); set S2 = GFA2CarryStr (x,y,z); set A1 = GFA2AdderOutput (x,y,z); set A2 = GFA2CarryOutput (x,y,z); thus InnerVertices (BitGFA2Str (x,y,z)) = (InnerVertices (GFA2AdderStr (x,y,z))) \/ (InnerVertices (GFA2CarryStr (x,y,z))) by FACIRC_1:27 .= ({[<*x,y*>,xor2c]} \/ {(GFA2AdderOutput (x,y,z))}) \/ (InnerVertices (GFA2CarryStr (x,y,z))) by Th87 .= ({[<*x,y*>,xor2c]} \/ {(GFA2AdderOutput (x,y,z))}) \/ ({[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} \/ {(GFA2CarryOutput (x,y,z))}) by Th74 .= (({[<*x,y*>,xor2c]} \/ {(GFA2AdderOutput (x,y,z))}) \/ {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]}) \/ {(GFA2CarryOutput (x,y,z))} by XBOOLE_1:4 ; ::_thesis: verum end; theorem :: GFACIRC1:96 for x, y, z being set holds InnerVertices (BitGFA2Str (x,y,z)) is Relation proof let x, y, z be set ; ::_thesis: InnerVertices (BitGFA2Str (x,y,z)) is Relation set S1 = GFA2AdderStr (x,y,z); set S2 = GFA2CarryStr (x,y,z); ( InnerVertices (GFA2AdderStr (x,y,z)) is Relation & InnerVertices (GFA2CarryStr (x,y,z)) is Relation ) by Th75, FACIRC_1:58; hence InnerVertices (BitGFA2Str (x,y,z)) is Relation by FACIRC_1:3; ::_thesis: verum end; theorem Th97: :: GFACIRC1:97 for x, y, z being set st z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] holds InputVertices (BitGFA2Str (x,y,z)) = {x,y,z} proof set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; set f0 = xor2c ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] implies InputVertices (BitGFA2Str (x,y,z)) = {x,y,z} ) assume A1: ( z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] ) ; ::_thesis: InputVertices (BitGFA2Str (x,y,z)) = {x,y,z} set S2 = GFA2CarryStr (x,y,z); set S1 = GFA2AdderStr (x,y,z); ( InputVertices (GFA2AdderStr (x,y,z)) = {x,y,z} & InputVertices (GFA2CarryStr (x,y,z)) = {x,y,z} ) by A1, Th77, FACIRC_1:57; hence InputVertices (BitGFA2Str (x,y,z)) = {x,y,z} by CIRCCOMB:47, FACIRC_2:21; ::_thesis: verum end; theorem Th98: :: GFACIRC1:98 for x, y, z being non pair set holds InputVertices (BitGFA2Str (x,y,z)) = {x,y,z} proof let x, y, z be non pair set ; ::_thesis: InputVertices (BitGFA2Str (x,y,z)) = {x,y,z} set S = BitGFA2Str (x,y,z); set S1 = GFA2AdderStr (x,y,z); set S2 = GFA2CarryStr (x,y,z); A1: ( InputVertices (GFA2AdderStr (x,y,z)) = {x,y,z} & InputVertices (GFA2CarryStr (x,y,z)) = {x,y,z} ) by Th82, FACIRC_1:57; ( InnerVertices (GFA2AdderStr (x,y,z)) is Relation & InnerVertices (GFA2CarryStr (x,y,z)) is Relation ) by Th75, FACIRC_1:58; hence InputVertices (BitGFA2Str (x,y,z)) = {x,y,z} \/ {x,y,z} by A1, FACIRC_1:7 .= {x,y,z} ; ::_thesis: verum end; theorem :: GFACIRC1:99 for x, y, z being non pair set holds InputVertices (BitGFA2Str (x,y,z)) is without_pairs proof let x, y, z be non pair set ; ::_thesis: InputVertices (BitGFA2Str (x,y,z)) is without_pairs InputVertices (BitGFA2Str (x,y,z)) = {x,y,z} by Th98; hence InputVertices (BitGFA2Str (x,y,z)) is without_pairs ; ::_thesis: verum end; theorem :: GFACIRC1:100 for x, y, z being set holds ( x in the carrier of (BitGFA2Str (x,y,z)) & y in the carrier of (BitGFA2Str (x,y,z)) & z in the carrier of (BitGFA2Str (x,y,z)) & [<*x,y*>,xor2c] in the carrier of (BitGFA2Str (x,y,z)) & [<*[<*x,y*>,xor2c],z*>,xor2c] in the carrier of (BitGFA2Str (x,y,z)) & [<*x,y*>,and2a] in the carrier of (BitGFA2Str (x,y,z)) & [<*y,z*>,and2c] in the carrier of (BitGFA2Str (x,y,z)) & [<*z,x*>,and2b] in the carrier of (BitGFA2Str (x,y,z)) & [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3] in the carrier of (BitGFA2Str (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( x in the carrier of (BitGFA2Str (x,y,z)) & y in the carrier of (BitGFA2Str (x,y,z)) & z in the carrier of (BitGFA2Str (x,y,z)) & [<*x,y*>,xor2c] in the carrier of (BitGFA2Str (x,y,z)) & [<*[<*x,y*>,xor2c],z*>,xor2c] in the carrier of (BitGFA2Str (x,y,z)) & [<*x,y*>,and2a] in the carrier of (BitGFA2Str (x,y,z)) & [<*y,z*>,and2c] in the carrier of (BitGFA2Str (x,y,z)) & [<*z,x*>,and2b] in the carrier of (BitGFA2Str (x,y,z)) & [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3] in the carrier of (BitGFA2Str (x,y,z)) ) set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; set f4 = nor3 ; set f0 = xor2c ; set xy = [<*x,y*>,and2a]; set yz = [<*y,z*>,and2c]; set zx = [<*z,x*>,and2b]; set xyz = [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3]; set S1 = GFA2AdderStr (x,y,z); set S2 = GFA2CarryStr (x,y,z); A1: ( x in the carrier of (GFA2AdderStr (x,y,z)) & y in the carrier of (GFA2AdderStr (x,y,z)) ) by FACIRC_1:60; A2: ( z in the carrier of (GFA2AdderStr (x,y,z)) & [<*x,y*>,xor2c] in the carrier of (GFA2AdderStr (x,y,z)) ) by FACIRC_1:60, FACIRC_1:61; A3: [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3] in the carrier of (GFA2CarryStr (x,y,z)) by Th79; A4: ( [<*y,z*>,and2c] in the carrier of (GFA2CarryStr (x,y,z)) & [<*z,x*>,and2b] in the carrier of (GFA2CarryStr (x,y,z)) ) by Th79; ( [<*[<*x,y*>,xor2c],z*>,xor2c] in the carrier of (GFA2AdderStr (x,y,z)) & [<*x,y*>,and2a] in the carrier of (GFA2CarryStr (x,y,z)) ) by Th79, FACIRC_1:61; hence ( x in the carrier of (BitGFA2Str (x,y,z)) & y in the carrier of (BitGFA2Str (x,y,z)) & z in the carrier of (BitGFA2Str (x,y,z)) & [<*x,y*>,xor2c] in the carrier of (BitGFA2Str (x,y,z)) & [<*[<*x,y*>,xor2c],z*>,xor2c] in the carrier of (BitGFA2Str (x,y,z)) & [<*x,y*>,and2a] in the carrier of (BitGFA2Str (x,y,z)) & [<*y,z*>,and2c] in the carrier of (BitGFA2Str (x,y,z)) & [<*z,x*>,and2b] in the carrier of (BitGFA2Str (x,y,z)) & [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3] in the carrier of (BitGFA2Str (x,y,z)) ) by A1, A2, A4, A3, FACIRC_1:20; ::_thesis: verum end; theorem Th101: :: GFACIRC1:101 for x, y, z being set holds ( [<*x,y*>,xor2c] in InnerVertices (BitGFA2Str (x,y,z)) & GFA2AdderOutput (x,y,z) in InnerVertices (BitGFA2Str (x,y,z)) & [<*x,y*>,and2a] in InnerVertices (BitGFA2Str (x,y,z)) & [<*y,z*>,and2c] in InnerVertices (BitGFA2Str (x,y,z)) & [<*z,x*>,and2b] in InnerVertices (BitGFA2Str (x,y,z)) & GFA2CarryOutput (x,y,z) in InnerVertices (BitGFA2Str (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( [<*x,y*>,xor2c] in InnerVertices (BitGFA2Str (x,y,z)) & GFA2AdderOutput (x,y,z) in InnerVertices (BitGFA2Str (x,y,z)) & [<*x,y*>,and2a] in InnerVertices (BitGFA2Str (x,y,z)) & [<*y,z*>,and2c] in InnerVertices (BitGFA2Str (x,y,z)) & [<*z,x*>,and2b] in InnerVertices (BitGFA2Str (x,y,z)) & GFA2CarryOutput (x,y,z) in InnerVertices (BitGFA2Str (x,y,z)) ) set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; set f0 = xor2c ; set xyf0 = [<*x,y*>,xor2c]; set xyf1 = [<*x,y*>,and2a]; set yzf2 = [<*y,z*>,and2c]; set zxf3 = [<*z,x*>,and2b]; set S = BitGFA2Str (x,y,z); set A1 = GFA2AdderOutput (x,y,z); set A2 = GFA2CarryOutput (x,y,z); InnerVertices (BitGFA2Str (x,y,z)) = (({[<*x,y*>,xor2c]} \/ {(GFA2AdderOutput (x,y,z))}) \/ {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]}) \/ {(GFA2CarryOutput (x,y,z))} by Th95 .= ({[<*x,y*>,xor2c],(GFA2AdderOutput (x,y,z))} \/ {[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]}) \/ {(GFA2CarryOutput (x,y,z))} by ENUMSET1:1 .= {[<*x,y*>,xor2c],(GFA2AdderOutput (x,y,z)),[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]} \/ {(GFA2CarryOutput (x,y,z))} by ENUMSET1:8 .= {[<*x,y*>,xor2c],(GFA2AdderOutput (x,y,z)),[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b],(GFA2CarryOutput (x,y,z))} by ENUMSET1:15 ; hence ( [<*x,y*>,xor2c] in InnerVertices (BitGFA2Str (x,y,z)) & GFA2AdderOutput (x,y,z) in InnerVertices (BitGFA2Str (x,y,z)) & [<*x,y*>,and2a] in InnerVertices (BitGFA2Str (x,y,z)) & [<*y,z*>,and2c] in InnerVertices (BitGFA2Str (x,y,z)) & [<*z,x*>,and2b] in InnerVertices (BitGFA2Str (x,y,z)) & GFA2CarryOutput (x,y,z) in InnerVertices (BitGFA2Str (x,y,z)) ) by ENUMSET1:def_4; ::_thesis: verum end; theorem :: GFACIRC1:102 for x, y, z being set st z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] holds ( x in InputVertices (BitGFA2Str (x,y,z)) & y in InputVertices (BitGFA2Str (x,y,z)) & z in InputVertices (BitGFA2Str (x,y,z)) ) proof set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; set f0 = xor2c ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] implies ( x in InputVertices (BitGFA2Str (x,y,z)) & y in InputVertices (BitGFA2Str (x,y,z)) & z in InputVertices (BitGFA2Str (x,y,z)) ) ) assume A1: ( z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] ) ; ::_thesis: ( x in InputVertices (BitGFA2Str (x,y,z)) & y in InputVertices (BitGFA2Str (x,y,z)) & z in InputVertices (BitGFA2Str (x,y,z)) ) set S = BitGFA2Str (x,y,z); InputVertices (BitGFA2Str (x,y,z)) = {x,y,z} by A1, Th97; hence ( x in InputVertices (BitGFA2Str (x,y,z)) & y in InputVertices (BitGFA2Str (x,y,z)) & z in InputVertices (BitGFA2Str (x,y,z)) ) by ENUMSET1:def_1; ::_thesis: verum end; definition let x, y, z be set ; func BitGFA2CarryOutput (x,y,z) -> Element of InnerVertices (BitGFA2Str (x,y,z)) equals :: GFACIRC1:def 39 [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3]; coherence [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3] is Element of InnerVertices (BitGFA2Str (x,y,z)) proof GFA2CarryOutput (x,y,z) in InnerVertices (BitGFA2Str (x,y,z)) by Th101; hence [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3] is Element of InnerVertices (BitGFA2Str (x,y,z)) ; ::_thesis: verum end; end; :: deftheorem defines BitGFA2CarryOutput GFACIRC1:def_39_:_ for x, y, z being set holds BitGFA2CarryOutput (x,y,z) = [<*[<*x,y*>,and2a],[<*y,z*>,and2c],[<*z,x*>,and2b]*>,nor3]; definition let x, y, z be set ; func BitGFA2AdderOutput (x,y,z) -> Element of InnerVertices (BitGFA2Str (x,y,z)) equals :: GFACIRC1:def 40 2GatesCircOutput (x,y,z,xor2c); coherence 2GatesCircOutput (x,y,z,xor2c) is Element of InnerVertices (BitGFA2Str (x,y,z)) proof GFA2AdderOutput (x,y,z) in InnerVertices (BitGFA2Str (x,y,z)) by Th101; hence 2GatesCircOutput (x,y,z,xor2c) is Element of InnerVertices (BitGFA2Str (x,y,z)) ; ::_thesis: verum end; end; :: deftheorem defines BitGFA2AdderOutput GFACIRC1:def_40_:_ for x, y, z being set holds BitGFA2AdderOutput (x,y,z) = 2GatesCircOutput (x,y,z,xor2c); theorem :: GFACIRC1:103 for x, y, z being set st z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] holds for s being State of (BitGFA2Circ (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA2AdderOutput (x,y,z)) = (('not' a1) 'xor' a2) 'xor' ('not' a3) & (Following (s,2)) . (GFA2CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' a2) 'or' (a2 '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) ) proof set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; set f0 = xor2c ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] implies for s being State of (BitGFA2Circ (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA2AdderOutput (x,y,z)) = (('not' a1) 'xor' a2) 'xor' ('not' a3) & (Following (s,2)) . (GFA2CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' a2) 'or' (a2 '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) ) ) assume that A1: z <> [<*x,y*>,xor2c] and A2: ( x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] ) ; ::_thesis: for s being State of (BitGFA2Circ (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA2AdderOutput (x,y,z)) = (('not' a1) 'xor' a2) 'xor' ('not' a3) & (Following (s,2)) . (GFA2CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' a2) 'or' (a2 '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) ) set S2 = GFA2CarryStr (x,y,z); set S1 = GFA2AdderStr (x,y,z); InputVertices (GFA2AdderStr (x,y,z)) = {x,y,z} by A1, FACIRC_1:57; then A3: InputVertices (GFA2AdderStr (x,y,z)) = InputVertices (GFA2CarryStr (x,y,z)) by A2, Th77; set A2 = GFA2CarryCirc (x,y,z); set A1 = GFA2AdderCirc (x,y,z); set A = BitGFA2Circ (x,y,z); let s be State of (BitGFA2Circ (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA2AdderOutput (x,y,z)) = (('not' a1) 'xor' a2) 'xor' ('not' a3) & (Following (s,2)) . (GFA2CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' a2) 'or' (a2 '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) ) let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies ( (Following (s,2)) . (GFA2AdderOutput (x,y,z)) = (('not' a1) 'xor' a2) 'xor' ('not' a3) & (Following (s,2)) . (GFA2CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' a2) 'or' (a2 '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) ) ) assume that A4: a1 = s . x and A5: a2 = s . y and A6: a3 = s . z ; ::_thesis: ( (Following (s,2)) . (GFA2AdderOutput (x,y,z)) = (('not' a1) 'xor' a2) 'xor' ('not' a3) & (Following (s,2)) . (GFA2CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' a2) 'or' (a2 '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) ) reconsider s1 = s | the carrier of (GFA2AdderStr (x,y,z)) as State of (GFA2AdderCirc (x,y,z)) by FACIRC_1:26; A7: dom s1 = the carrier of (GFA2AdderStr (x,y,z)) by CIRCUIT1:3; z in the carrier of (GFA2AdderStr (x,y,z)) by FACIRC_1:60; then A8: a3 = s1 . z by A6, A7, FUNCT_1:47; y in the carrier of (GFA2AdderStr (x,y,z)) by FACIRC_1:60; then A9: a2 = s1 . y by A5, A7, FUNCT_1:47; reconsider t = s as State of ((GFA2AdderCirc (x,y,z)) +* (GFA2CarryCirc (x,y,z))) ; InnerVertices (GFA2CarryStr (x,y,z)) misses InputVertices (GFA2CarryStr (x,y,z)) by XBOOLE_1:79; then A10: (Following (t,2)) . (GFA2AdderOutput (x,y,z)) = (Following (s1,2)) . (GFA2AdderOutput (x,y,z)) by A3, FACIRC_1:32; reconsider s2 = s | the carrier of (GFA2CarryStr (x,y,z)) as State of (GFA2CarryCirc (x,y,z)) by FACIRC_1:26; A11: dom s2 = the carrier of (GFA2CarryStr (x,y,z)) by CIRCUIT1:3; x in the carrier of (GFA2AdderStr (x,y,z)) by FACIRC_1:60; then a1 = s1 . x by A4, A7, FUNCT_1:47; hence (Following (s,2)) . (GFA2AdderOutput (x,y,z)) = (('not' a1) 'xor' a2) 'xor' ('not' a3) by A1, A9, A8, A10, Th94; ::_thesis: (Following (s,2)) . (GFA2CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' a2) 'or' (a2 '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) InnerVertices (GFA2AdderStr (x,y,z)) misses InputVertices (GFA2AdderStr (x,y,z)) by XBOOLE_1:79; then A12: (Following (t,2)) . (GFA2CarryOutput (x,y,z)) = (Following (s2,2)) . (GFA2CarryOutput (x,y,z)) by A3, FACIRC_1:33; z in the carrier of (GFA2CarryStr (x,y,z)) by Th79; then A13: a3 = s2 . z by A6, A11, FUNCT_1:47; y in the carrier of (GFA2CarryStr (x,y,z)) by Th79; then A14: a2 = s2 . y by A5, A11, FUNCT_1:47; x in the carrier of (GFA2CarryStr (x,y,z)) by Th79; then a1 = s2 . x by A4, A11, FUNCT_1:47; hence (Following (s,2)) . (GFA2CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' a2) 'or' (a2 '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) by A2, A14, A13, A12, Th85; ::_thesis: verum end; theorem :: GFACIRC1:104 for x, y, z being set st z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] holds for s being State of (BitGFA2Circ (x,y,z)) holds Following (s,2) is stable proof set f1 = and2a ; set f2 = and2c ; set f3 = and2b ; set f0 = xor2c ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2c] & x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] implies for s being State of (BitGFA2Circ (x,y,z)) holds Following (s,2) is stable ) assume that A1: z <> [<*x,y*>,xor2c] and A2: ( x <> [<*y,z*>,and2c] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2a] ) ; ::_thesis: for s being State of (BitGFA2Circ (x,y,z)) holds Following (s,2) is stable set A = BitGFA2Circ (x,y,z); let s be State of (BitGFA2Circ (x,y,z)); ::_thesis: Following (s,2) is stable set S2 = GFA2CarryStr (x,y,z); set S1 = GFA2AdderStr (x,y,z); InputVertices (GFA2AdderStr (x,y,z)) = {x,y,z} by A1, FACIRC_1:57; then A3: InputVertices (GFA2AdderStr (x,y,z)) = InputVertices (GFA2CarryStr (x,y,z)) by A2, Th77; set A1 = GFA2AdderCirc (x,y,z); reconsider s1 = s | the carrier of (GFA2AdderStr (x,y,z)) as State of (GFA2AdderCirc (x,y,z)) by FACIRC_1:26; Following (s1,2) is stable by A1, FACIRC_1:63; then A4: Following (s1,2) = Following (Following (s1,2)) by CIRCUIT2:def_6 .= Following (s1,(2 + 1)) by FACIRC_1:12 ; set A2 = GFA2CarryCirc (x,y,z); reconsider s2 = s | the carrier of (GFA2CarryStr (x,y,z)) as State of (GFA2CarryCirc (x,y,z)) by FACIRC_1:26; Following (s2,2) is stable by A2, Th86; then A5: Following (s2,2) = Following (Following (s2,2)) by CIRCUIT2:def_6 .= Following (s2,(2 + 1)) by FACIRC_1:12 ; reconsider t = s as State of ((GFA2AdderCirc (x,y,z)) +* (GFA2CarryCirc (x,y,z))) ; set S = BitGFA2Str (x,y,z); A6: dom (Following (s,3)) = the carrier of (BitGFA2Str (x,y,z)) by CIRCUIT1:3; InnerVertices (GFA2CarryStr (x,y,z)) misses InputVertices (GFA2CarryStr (x,y,z)) by XBOOLE_1:79; then A7: ( Following (s1,2) = (Following (t,2)) | the carrier of (GFA2AdderStr (x,y,z)) & Following (s1,3) = (Following (t,3)) | the carrier of (GFA2AdderStr (x,y,z)) ) by A3, FACIRC_1:30; InnerVertices (GFA2AdderStr (x,y,z)) misses InputVertices (GFA2AdderStr (x,y,z)) by XBOOLE_1:79; then A8: ( Following (s2,2) = (Following (t,2)) | the carrier of (GFA2CarryStr (x,y,z)) & Following (s2,3) = (Following (t,3)) | the carrier of (GFA2CarryStr (x,y,z)) ) by A3, FACIRC_1:31; A9: the carrier of (BitGFA2Str (x,y,z)) = the carrier of (GFA2AdderStr (x,y,z)) \/ the carrier of (GFA2CarryStr (x,y,z)) by CIRCCOMB:def_2; A10: ( dom (Following (s1,2)) = the carrier of (GFA2AdderStr (x,y,z)) & dom (Following (s2,2)) = the carrier of (GFA2CarryStr (x,y,z)) ) by CIRCUIT1:3; A11: now__::_thesis:_for_a_being_set_st_a_in_the_carrier_of_(BitGFA2Str_(x,y,z))_holds_ (Following_(s,2))_._a_=_(Following_(Following_(s,2)))_._a let a be set ; ::_thesis: ( a in the carrier of (BitGFA2Str (x,y,z)) implies (Following (s,2)) . a = (Following (Following (s,2))) . a ) assume a in the carrier of (BitGFA2Str (x,y,z)) ; ::_thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a then ( a in the carrier of (GFA2AdderStr (x,y,z)) or a in the carrier of (GFA2CarryStr (x,y,z)) ) by A9, XBOOLE_0:def_3; then ( ( (Following (s,2)) . a = (Following (s1,2)) . a & (Following (s,3)) . a = (Following (s1,3)) . a ) or ( (Following (s,2)) . a = (Following (s2,2)) . a & (Following (s,3)) . a = (Following (s2,3)) . a ) ) by A7, A8, A4, A5, A10, FUNCT_1:47; hence (Following (s,2)) . a = (Following (Following (s,2))) . a by A4, A5, FACIRC_1:12; ::_thesis: verum end; ( Following (s,(2 + 1)) = Following (Following (s,2)) & dom (Following (s,2)) = the carrier of (BitGFA2Str (x,y,z)) ) by CIRCUIT1:3, FACIRC_1:12; hence Following (s,2) = Following (Following (s,2)) by A6, A11, FUNCT_1:2; :: according to CIRCUIT2:def_6 ::_thesis: verum end; begin definition let x, y, z be set ; func GFA3CarryIStr (x,y,z) -> non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: GFACIRC1:def 41 ((1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b))) +* (1GateCircStr (<*z,x*>,and2b)); coherence ((1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b))) +* (1GateCircStr (<*z,x*>,and2b)) is non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign ; end; :: deftheorem defines GFA3CarryIStr GFACIRC1:def_41_:_ for x, y, z being set holds GFA3CarryIStr (x,y,z) = ((1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b))) +* (1GateCircStr (<*z,x*>,and2b)); definition let x, y, z be set ; func GFA3CarryICirc (x,y,z) -> strict gate`2=den Boolean Circuit of GFA3CarryIStr (x,y,z) equals :: GFACIRC1:def 42 ((1GateCircuit (x,y,and2b)) +* (1GateCircuit (y,z,and2b))) +* (1GateCircuit (z,x,and2b)); coherence ((1GateCircuit (x,y,and2b)) +* (1GateCircuit (y,z,and2b))) +* (1GateCircuit (z,x,and2b)) is strict gate`2=den Boolean Circuit of GFA3CarryIStr (x,y,z) ; end; :: deftheorem defines GFA3CarryICirc GFACIRC1:def_42_:_ for x, y, z being set holds GFA3CarryICirc (x,y,z) = ((1GateCircuit (x,y,and2b)) +* (1GateCircuit (y,z,and2b))) +* (1GateCircuit (z,x,and2b)); definition let x, y, z be set ; func GFA3CarryStr (x,y,z) -> non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: GFACIRC1:def 43 (GFA3CarryIStr (x,y,z)) +* (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)); coherence (GFA3CarryIStr (x,y,z)) +* (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)) is non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign ; end; :: deftheorem defines GFA3CarryStr GFACIRC1:def_43_:_ for x, y, z being set holds GFA3CarryStr (x,y,z) = (GFA3CarryIStr (x,y,z)) +* (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)); definition let x, y, z be set ; func GFA3CarryCirc (x,y,z) -> strict gate`2=den Boolean Circuit of GFA3CarryStr (x,y,z) equals :: GFACIRC1:def 44 (GFA3CarryICirc (x,y,z)) +* (1GateCircuit ([<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b],nor3)); coherence (GFA3CarryICirc (x,y,z)) +* (1GateCircuit ([<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b],nor3)) is strict gate`2=den Boolean Circuit of GFA3CarryStr (x,y,z) ; end; :: deftheorem defines GFA3CarryCirc GFACIRC1:def_44_:_ for x, y, z being set holds GFA3CarryCirc (x,y,z) = (GFA3CarryICirc (x,y,z)) +* (1GateCircuit ([<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b],nor3)); definition let x, y, z be set ; func GFA3CarryOutput (x,y,z) -> Element of InnerVertices (GFA3CarryStr (x,y,z)) equals :: GFACIRC1:def 45 [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3]; coherence [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3] is Element of InnerVertices (GFA3CarryStr (x,y,z)) proof [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3] in InnerVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)) by FACIRC_1:47; hence [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3] is Element of InnerVertices (GFA3CarryStr (x,y,z)) by FACIRC_1:21; ::_thesis: verum end; end; :: deftheorem defines GFA3CarryOutput GFACIRC1:def_45_:_ for x, y, z being set holds GFA3CarryOutput (x,y,z) = [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3]; theorem Th105: :: GFACIRC1:105 for x, y, z being set holds InnerVertices (GFA3CarryIStr (x,y,z)) = {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} proof let x, y, z be set ; ::_thesis: InnerVertices (GFA3CarryIStr (x,y,z)) = {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; set xy = [<*x,y*>,and2b]; set yz = [<*y,z*>,and2b]; set zx = [<*z,x*>,and2b]; set Cxy = 1GateCircStr (<*x,y*>,and2b); set Cyz = 1GateCircStr (<*y,z*>,and2b); set Czx = 1GateCircStr (<*z,x*>,and2b); A1: 1GateCircStr (<*x,y*>,and2b) tolerates 1GateCircStr (<*y,z*>,and2b) by CIRCCOMB:47; (1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b)) tolerates 1GateCircStr (<*z,x*>,and2b) by CIRCCOMB:47; then InnerVertices (GFA3CarryIStr (x,y,z)) = (InnerVertices ((1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2b))) by CIRCCOMB:11 .= ((InnerVertices (1GateCircStr (<*x,y*>,and2b))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2b)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2b))) by A1, CIRCCOMB:11 .= ({[<*x,y*>,and2b]} \/ (InnerVertices (1GateCircStr (<*y,z*>,and2b)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2b))) by CIRCCOMB:42 .= ({[<*x,y*>,and2b]} \/ {[<*y,z*>,and2b]}) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2b))) by CIRCCOMB:42 .= ({[<*x,y*>,and2b]} \/ {[<*y,z*>,and2b]}) \/ {[<*z,x*>,and2b]} by CIRCCOMB:42 .= {[<*x,y*>,and2b],[<*y,z*>,and2b]} \/ {[<*z,x*>,and2b]} by ENUMSET1:1 .= {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} by ENUMSET1:3 ; hence InnerVertices (GFA3CarryIStr (x,y,z)) = {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} ; ::_thesis: verum end; theorem Th106: :: GFACIRC1:106 for x, y, z being set holds InnerVertices (GFA3CarryStr (x,y,z)) = {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} \/ {(GFA3CarryOutput (x,y,z))} proof let x, y, z be set ; ::_thesis: InnerVertices (GFA3CarryStr (x,y,z)) = {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} \/ {(GFA3CarryOutput (x,y,z))} set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; set f4 = nor3 ; set xy = [<*x,y*>,and2b]; set yz = [<*y,z*>,and2b]; set zx = [<*z,x*>,and2b]; set Cxy = 1GateCircStr (<*x,y*>,and2b); set Cyz = 1GateCircStr (<*y,z*>,and2b); set Czx = 1GateCircStr (<*z,x*>,and2b); set Cxyz = 1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3); A1: 1GateCircStr (<*x,y*>,and2b) tolerates ((1GateCircStr (<*y,z*>,and2b)) +* (1GateCircStr (<*z,x*>,and2b))) +* (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)) by CIRCCOMB:47; 1GateCircStr (<*y,z*>,and2b) tolerates (1GateCircStr (<*z,x*>,and2b)) +* (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)) by CIRCCOMB:47; then A2: InnerVertices ((1GateCircStr (<*y,z*>,and2b)) +* ((1GateCircStr (<*z,x*>,and2b)) +* (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)))) = (InnerVertices (1GateCircStr (<*y,z*>,and2b))) \/ (InnerVertices ((1GateCircStr (<*z,x*>,and2b)) +* (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)))) by CIRCCOMB:11; 1GateCircStr (<*z,x*>,and2b) tolerates 1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3) by CIRCCOMB:47; then A3: InnerVertices ((1GateCircStr (<*z,x*>,and2b)) +* (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3))) = (InnerVertices (1GateCircStr (<*z,x*>,and2b))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3))) by CIRCCOMB:11; thus InnerVertices (GFA3CarryStr (x,y,z)) = InnerVertices (((1GateCircStr (<*x,y*>,and2b)) +* ((1GateCircStr (<*y,z*>,and2b)) +* (1GateCircStr (<*z,x*>,and2b)))) +* (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3))) by CIRCCOMB:6 .= InnerVertices ((1GateCircStr (<*x,y*>,and2b)) +* (((1GateCircStr (<*y,z*>,and2b)) +* (1GateCircStr (<*z,x*>,and2b))) +* (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)))) by CIRCCOMB:6 .= (InnerVertices (1GateCircStr (<*x,y*>,and2b))) \/ (InnerVertices (((1GateCircStr (<*y,z*>,and2b)) +* (1GateCircStr (<*z,x*>,and2b))) +* (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)))) by A1, CIRCCOMB:11 .= (InnerVertices (1GateCircStr (<*x,y*>,and2b))) \/ (InnerVertices ((1GateCircStr (<*y,z*>,and2b)) +* ((1GateCircStr (<*z,x*>,and2b)) +* (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3))))) by CIRCCOMB:6 .= ((InnerVertices (1GateCircStr (<*x,y*>,and2b))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2b)))) \/ ((InnerVertices (1GateCircStr (<*z,x*>,and2b))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)))) by A2, A3, XBOOLE_1:4 .= (((InnerVertices (1GateCircStr (<*x,y*>,and2b))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2b)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2b)))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3))) by XBOOLE_1:4 .= (({[<*x,y*>,and2b]} \/ (InnerVertices (1GateCircStr (<*y,z*>,and2b)))) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2b)))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3))) by CIRCCOMB:42 .= (({[<*x,y*>,and2b]} \/ {[<*y,z*>,and2b]}) \/ (InnerVertices (1GateCircStr (<*z,x*>,and2b)))) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3))) by CIRCCOMB:42 .= (({[<*x,y*>,and2b]} \/ {[<*y,z*>,and2b]}) \/ {[<*z,x*>,and2b]}) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3))) by CIRCCOMB:42 .= ({[<*x,y*>,and2b],[<*y,z*>,and2b]} \/ {[<*z,x*>,and2b]}) \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3))) by ENUMSET1:1 .= {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} \/ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3))) by ENUMSET1:3 .= {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} \/ {(GFA3CarryOutput (x,y,z))} by CIRCCOMB:42 ; ::_thesis: verum end; theorem Th107: :: GFACIRC1:107 for x, y, z being set holds InnerVertices (GFA3CarryStr (x,y,z)) is Relation proof let x, y, z be set ; ::_thesis: InnerVertices (GFA3CarryStr (x,y,z)) is Relation set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; set f4 = nor3 ; set xy = [<*x,y*>,and2b]; set yz = [<*y,z*>,and2b]; set zx = [<*z,x*>,and2b]; set Cxy = 1GateCircStr (<*x,y*>,and2b); set Cyz = 1GateCircStr (<*y,z*>,and2b); set Czx = 1GateCircStr (<*z,x*>,and2b); set Cxyz = 1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3); ( InnerVertices (1GateCircStr (<*x,y*>,and2b)) is Relation & InnerVertices (1GateCircStr (<*y,z*>,and2b)) is Relation ) by FACIRC_1:38; then ( InnerVertices (1GateCircStr (<*z,x*>,and2b)) is Relation & InnerVertices ((1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b))) is Relation ) by FACIRC_1:3, FACIRC_1:38; then ( InnerVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)) is Relation & InnerVertices (GFA3CarryIStr (x,y,z)) is Relation ) by FACIRC_1:3, FACIRC_1:38; hence InnerVertices (GFA3CarryStr (x,y,z)) is Relation by FACIRC_1:3; ::_thesis: verum end; theorem Th108: :: GFACIRC1:108 for x, y, z being set st x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] holds InputVertices (GFA3CarryIStr (x,y,z)) = {x,y,z} proof let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] implies InputVertices (GFA3CarryIStr (x,y,z)) = {x,y,z} ) set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; set xy = [<*x,y*>,and2b]; set yz = [<*y,z*>,and2b]; set zx = [<*z,x*>,and2b]; set Cxy = 1GateCircStr (<*x,y*>,and2b); set Cyz = 1GateCircStr (<*y,z*>,and2b); set Czx = 1GateCircStr (<*z,x*>,and2b); assume that A1: x <> [<*y,z*>,and2b] and A2: ( y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] ) ; ::_thesis: InputVertices (GFA3CarryIStr (x,y,z)) = {x,y,z} A3: not [<*x,y*>,and2b] in {y,z} by A1, A2, Lm1; A4: not [<*z,x*>,and2b] in {x,y,z} by A1, A2, Lm1; A5: y <> [<*y,z*>,and2b] by FACIRC_2:2; A6: ( not z in {[<*x,y*>,and2b],[<*y,z*>,and2b]} & not x in {[<*x,y*>,and2b],[<*y,z*>,and2b]} ) by A1, A2, Lm1; A7: 1GateCircStr (<*x,y*>,and2b) tolerates 1GateCircStr (<*y,z*>,and2b) by CIRCCOMB:47; InputVertices (GFA3CarryIStr (x,y,z)) = ((InputVertices ((1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b)))) \ (InnerVertices (1GateCircStr (<*z,x*>,and2b)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ (InnerVertices ((1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b))))) by CIRCCMB2:5, CIRCCOMB:47 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2b))) \ (InnerVertices (1GateCircStr (<*y,z*>,and2b)))) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2b))) \ (InnerVertices (1GateCircStr (<*x,y*>,and2b))))) \ (InnerVertices (1GateCircStr (<*z,x*>,and2b)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ (InnerVertices ((1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b))))) by CIRCCMB2:5, CIRCCOMB:47 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2b))) \ (InnerVertices (1GateCircStr (<*y,z*>,and2b)))) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2b))) \ (InnerVertices (1GateCircStr (<*x,y*>,and2b))))) \ (InnerVertices (1GateCircStr (<*z,x*>,and2b)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ ((InnerVertices (1GateCircStr (<*x,y*>,and2b))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2b))))) by A7, CIRCCOMB:11 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2b))) \ {[<*y,z*>,and2b]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2b))) \ (InnerVertices (1GateCircStr (<*x,y*>,and2b))))) \ (InnerVertices (1GateCircStr (<*z,x*>,and2b)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ ((InnerVertices (1GateCircStr (<*x,y*>,and2b))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2b))))) by CIRCCOMB:42 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2b))) \ {[<*y,z*>,and2b]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2b))) \ {[<*x,y*>,and2b]})) \ (InnerVertices (1GateCircStr (<*z,x*>,and2b)))) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ ((InnerVertices (1GateCircStr (<*x,y*>,and2b))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2b))))) by CIRCCOMB:42 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2b))) \ {[<*y,z*>,and2b]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2b))) \ {[<*x,y*>,and2b]})) \ {[<*z,x*>,and2b]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ ((InnerVertices (1GateCircStr (<*x,y*>,and2b))) \/ (InnerVertices (1GateCircStr (<*y,z*>,and2b))))) by CIRCCOMB:42 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2b))) \ {[<*y,z*>,and2b]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2b))) \ {[<*x,y*>,and2b]})) \ {[<*z,x*>,and2b]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ ({[<*x,y*>,and2b]} \/ (InnerVertices (1GateCircStr (<*y,z*>,and2b))))) by CIRCCOMB:42 .= ((((InputVertices (1GateCircStr (<*x,y*>,and2b))) \ {[<*y,z*>,and2b]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2b))) \ {[<*x,y*>,and2b]})) \ {[<*z,x*>,and2b]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ ({[<*x,y*>,and2b]} \/ {[<*y,z*>,and2b]})) by CIRCCOMB:42 .= ((({x,y} \ {[<*y,z*>,and2b]}) \/ ((InputVertices (1GateCircStr (<*y,z*>,and2b))) \ {[<*x,y*>,and2b]})) \ {[<*z,x*>,and2b]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ ({[<*x,y*>,and2b]} \/ {[<*y,z*>,and2b]})) by FACIRC_1:40 .= ((({x,y} \ {[<*y,z*>,and2b]}) \/ ({y,z} \ {[<*x,y*>,and2b]})) \ {[<*z,x*>,and2b]}) \/ ((InputVertices (1GateCircStr (<*z,x*>,and2b))) \ ({[<*x,y*>,and2b]} \/ {[<*y,z*>,and2b]})) by FACIRC_1:40 .= ((({x,y} \ {[<*y,z*>,and2b]}) \/ ({y,z} \ {[<*x,y*>,and2b]})) \ {[<*z,x*>,and2b]}) \/ ({z,x} \ ({[<*x,y*>,and2b]} \/ {[<*y,z*>,and2b]})) by FACIRC_1:40 .= ((({x,y} \ {[<*y,z*>,and2b]}) \/ ({y,z} \ {[<*x,y*>,and2b]})) \ {[<*z,x*>,and2b]}) \/ ({z,x} \ {[<*x,y*>,and2b],[<*y,z*>,and2b]}) by ENUMSET1:1 .= (({x,y} \/ ({y,z} \ {[<*x,y*>,and2b]})) \ {[<*z,x*>,and2b]}) \/ ({z,x} \ {[<*x,y*>,and2b],[<*y,z*>,and2b]}) by A1, A5, FACIRC_2:1 .= (({x,y} \/ {y,z}) \ {[<*z,x*>,and2b]}) \/ ({z,x} \ {[<*x,y*>,and2b],[<*y,z*>,and2b]}) by A3, ZFMISC_1:57 .= (({x,y} \/ {y,z}) \ {[<*z,x*>,and2b]}) \/ {z,x} by A6, ZFMISC_1:63 .= ({x,y,y,z} \ {[<*z,x*>,and2b]}) \/ {z,x} by ENUMSET1:5 .= ({y,y,x,z} \ {[<*z,x*>,and2b]}) \/ {z,x} by ENUMSET1:67 .= ({y,x,z} \ {[<*z,x*>,and2b]}) \/ {z,x} by ENUMSET1:31 .= ({x,y,z} \ {[<*z,x*>,and2b]}) \/ {z,x} by ENUMSET1:58 .= {x,y,z} \/ {z,x} by A4, ZFMISC_1:57 .= {x,y,z,z,x} by ENUMSET1:9 .= {x,y,z,z} \/ {x} by ENUMSET1:10 .= {z,z,x,y} \/ {x} by ENUMSET1:73 .= {z,x,y} \/ {x} by ENUMSET1:31 .= {z,x,y,x} by ENUMSET1:6 .= {x,x,y,z} by ENUMSET1:70 .= {x,y,z} by ENUMSET1:31 ; hence InputVertices (GFA3CarryIStr (x,y,z)) = {x,y,z} ; ::_thesis: verum end; theorem Th109: :: GFACIRC1:109 for x, y, z being set st x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] holds InputVertices (GFA3CarryStr (x,y,z)) = {x,y,z} proof let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] implies InputVertices (GFA3CarryStr (x,y,z)) = {x,y,z} ) set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; set f4 = nor3 ; set xy = [<*x,y*>,and2b]; set yz = [<*y,z*>,and2b]; set zx = [<*z,x*>,and2b]; set xyz = [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3]; set S = 1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3); set MI = GFA3CarryIStr (x,y,z); A1: InputVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)) = rng <*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*> by CIRCCOMB:42 .= {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} by FINSEQ_2:128 ; assume A2: ( x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] ) ; ::_thesis: InputVertices (GFA3CarryStr (x,y,z)) = {x,y,z} A3: ( InnerVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)) = {[<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3]} & {x,y,z} \ {[<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3]} = {x,y,z} ) by Lm2, CIRCCOMB:42; A4: {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} \ {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} = {} by XBOOLE_1:37; thus InputVertices (GFA3CarryStr (x,y,z)) = ((InputVertices (GFA3CarryIStr (x,y,z))) \ (InnerVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)))) \/ ((InputVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3))) \ (InnerVertices (GFA3CarryIStr (x,y,z)))) by CIRCCMB2:5, CIRCCOMB:47 .= {x,y,z} \/ ({[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} \ (InnerVertices (GFA3CarryIStr (x,y,z)))) by A1, A2, A3, Th108 .= {x,y,z} \/ {} by A4, Th105 .= {x,y,z} ; ::_thesis: verum end; theorem :: GFACIRC1:110 for x, y, z being non pair set holds InputVertices (GFA3CarryStr (x,y,z)) is without_pairs proof let x, y, z be non pair set ; ::_thesis: InputVertices (GFA3CarryStr (x,y,z)) is without_pairs set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; set f4 = nor3 ; set xy = [<*x,y*>,and2b]; set yz = [<*y,z*>,and2b]; set zx = [<*z,x*>,and2b]; set Cxy = 1GateCircStr (<*x,y*>,and2b); set Cyz = 1GateCircStr (<*y,z*>,and2b); set Czx = 1GateCircStr (<*z,x*>,and2b); set S = 1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3); set M = GFA3CarryStr (x,y,z); set MI = GFA3CarryIStr (x,y,z); given xx being pair set such that A1: xx in InputVertices (GFA3CarryStr (x,y,z)) ; :: according to FACIRC_1:def_2 ::_thesis: contradiction A2: 1GateCircStr (<*x,y*>,and2b) tolerates 1GateCircStr (<*y,z*>,and2b) by CIRCCOMB:47; A3: ( InnerVertices (1GateCircStr (<*z,x*>,and2b)) = {[<*z,x*>,and2b]} & (1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b)) tolerates 1GateCircStr (<*z,x*>,and2b) ) by CIRCCOMB:42, CIRCCOMB:47; ( InnerVertices (1GateCircStr (<*x,y*>,and2b)) = {[<*x,y*>,and2b]} & InnerVertices (1GateCircStr (<*y,z*>,and2b)) = {[<*y,z*>,and2b]} ) by CIRCCOMB:42; then InnerVertices ((1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b))) = {[<*x,y*>,and2b]} \/ {[<*y,z*>,and2b]} by A2, CIRCCOMB:11; then A4: InnerVertices (GFA3CarryIStr (x,y,z)) = ({[<*x,y*>,and2b]} \/ {[<*y,z*>,and2b]}) \/ {[<*z,x*>,and2b]} by A3, CIRCCOMB:11 .= {[<*x,y*>,and2b],[<*y,z*>,and2b]} \/ {[<*z,x*>,and2b]} by ENUMSET1:1 .= {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} by ENUMSET1:3 ; InputVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)) = {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} by FACIRC_1:42; then A5: (InputVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3))) \ (InnerVertices (GFA3CarryIStr (x,y,z))) = {} by A4, XBOOLE_1:37; ( InputVertices (1GateCircStr (<*x,y*>,and2b)) is without_pairs & InputVertices (1GateCircStr (<*y,z*>,and2b)) is without_pairs ) by FACIRC_1:41; then ( InputVertices (1GateCircStr (<*z,x*>,and2b)) is without_pairs & InputVertices ((1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b))) is without_pairs ) by FACIRC_1:9, FACIRC_1:41; then A6: InputVertices (GFA3CarryIStr (x,y,z)) is without_pairs by FACIRC_1:9; InnerVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)) is Relation by FACIRC_1:38; then InputVertices (GFA3CarryStr (x,y,z)) = (InputVertices (GFA3CarryIStr (x,y,z))) \/ ((InputVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3))) \ (InnerVertices (GFA3CarryIStr (x,y,z)))) by A6, FACIRC_1:6; hence contradiction by A6, A1, A5, FACIRC_1:def_2; ::_thesis: verum end; theorem Th111: :: GFACIRC1:111 for x, y, z being set holds ( x in the carrier of (GFA3CarryStr (x,y,z)) & y in the carrier of (GFA3CarryStr (x,y,z)) & z in the carrier of (GFA3CarryStr (x,y,z)) & [<*x,y*>,and2b] in the carrier of (GFA3CarryStr (x,y,z)) & [<*y,z*>,and2b] in the carrier of (GFA3CarryStr (x,y,z)) & [<*z,x*>,and2b] in the carrier of (GFA3CarryStr (x,y,z)) & [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3] in the carrier of (GFA3CarryStr (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( x in the carrier of (GFA3CarryStr (x,y,z)) & y in the carrier of (GFA3CarryStr (x,y,z)) & z in the carrier of (GFA3CarryStr (x,y,z)) & [<*x,y*>,and2b] in the carrier of (GFA3CarryStr (x,y,z)) & [<*y,z*>,and2b] in the carrier of (GFA3CarryStr (x,y,z)) & [<*z,x*>,and2b] in the carrier of (GFA3CarryStr (x,y,z)) & [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3] in the carrier of (GFA3CarryStr (x,y,z)) ) set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; set f4 = nor3 ; set xy = [<*x,y*>,and2b]; set yz = [<*y,z*>,and2b]; set zx = [<*z,x*>,and2b]; set xyz = [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3]; set Cxy = 1GateCircStr (<*x,y*>,and2b); set Cyz = 1GateCircStr (<*y,z*>,and2b); set Czx = 1GateCircStr (<*z,x*>,and2b); set Cxyz = 1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3); set p = <*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>; z in the carrier of (1GateCircStr (<*z,x*>,and2b)) by FACIRC_1:43; then A1: z in the carrier of (GFA3CarryIStr (x,y,z)) by FACIRC_1:20; [<*z,x*>,and2b] in the carrier of (1GateCircStr (<*z,x*>,and2b)) by FACIRC_1:43; then A2: [<*z,x*>,and2b] in the carrier of (GFA3CarryIStr (x,y,z)) by FACIRC_1:20; y in the carrier of (1GateCircStr (<*x,y*>,and2b)) by FACIRC_1:43; then y in the carrier of ((1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b))) by FACIRC_1:20; then A3: y in the carrier of (GFA3CarryIStr (x,y,z)) by FACIRC_1:20; ( the carrier of (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)) = (rng <*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>) \/ {[<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3]} & [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3] in {[<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3]} ) by CIRCCOMB:def_6, TARSKI:def_1; then A4: [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3] in the carrier of (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)) by XBOOLE_0:def_3; [<*y,z*>,and2b] in the carrier of (1GateCircStr (<*y,z*>,and2b)) by FACIRC_1:43; then [<*y,z*>,and2b] in the carrier of ((1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b))) by FACIRC_1:20; then A5: [<*y,z*>,and2b] in the carrier of (GFA3CarryIStr (x,y,z)) by FACIRC_1:20; [<*x,y*>,and2b] in the carrier of (1GateCircStr (<*x,y*>,and2b)) by FACIRC_1:43; then [<*x,y*>,and2b] in the carrier of ((1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b))) by FACIRC_1:20; then A6: [<*x,y*>,and2b] in the carrier of (GFA3CarryIStr (x,y,z)) by FACIRC_1:20; x in the carrier of (1GateCircStr (<*z,x*>,and2b)) by FACIRC_1:43; then x in the carrier of (GFA3CarryIStr (x,y,z)) by FACIRC_1:20; hence ( x in the carrier of (GFA3CarryStr (x,y,z)) & y in the carrier of (GFA3CarryStr (x,y,z)) & z in the carrier of (GFA3CarryStr (x,y,z)) & [<*x,y*>,and2b] in the carrier of (GFA3CarryStr (x,y,z)) & [<*y,z*>,and2b] in the carrier of (GFA3CarryStr (x,y,z)) & [<*z,x*>,and2b] in the carrier of (GFA3CarryStr (x,y,z)) & [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3] in the carrier of (GFA3CarryStr (x,y,z)) ) by A3, A1, A6, A5, A2, A4, FACIRC_1:20; ::_thesis: verum end; theorem Th112: :: GFACIRC1:112 for x, y, z being set holds ( [<*x,y*>,and2b] in InnerVertices (GFA3CarryStr (x,y,z)) & [<*y,z*>,and2b] in InnerVertices (GFA3CarryStr (x,y,z)) & [<*z,x*>,and2b] in InnerVertices (GFA3CarryStr (x,y,z)) & GFA3CarryOutput (x,y,z) in InnerVertices (GFA3CarryStr (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( [<*x,y*>,and2b] in InnerVertices (GFA3CarryStr (x,y,z)) & [<*y,z*>,and2b] in InnerVertices (GFA3CarryStr (x,y,z)) & [<*z,x*>,and2b] in InnerVertices (GFA3CarryStr (x,y,z)) & GFA3CarryOutput (x,y,z) in InnerVertices (GFA3CarryStr (x,y,z)) ) set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; set xy = [<*x,y*>,and2b]; set yz = [<*y,z*>,and2b]; set zx = [<*z,x*>,and2b]; InnerVertices (GFA3CarryStr (x,y,z)) = {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} \/ {(GFA3CarryOutput (x,y,z))} by Th106 .= {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b],(GFA3CarryOutput (x,y,z))} by ENUMSET1:6 ; hence ( [<*x,y*>,and2b] in InnerVertices (GFA3CarryStr (x,y,z)) & [<*y,z*>,and2b] in InnerVertices (GFA3CarryStr (x,y,z)) & [<*z,x*>,and2b] in InnerVertices (GFA3CarryStr (x,y,z)) & GFA3CarryOutput (x,y,z) in InnerVertices (GFA3CarryStr (x,y,z)) ) by ENUMSET1:def_2; ::_thesis: verum end; theorem Th113: :: GFACIRC1:113 for x, y, z being set st x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] holds ( x in InputVertices (GFA3CarryStr (x,y,z)) & y in InputVertices (GFA3CarryStr (x,y,z)) & z in InputVertices (GFA3CarryStr (x,y,z)) ) proof set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] implies ( x in InputVertices (GFA3CarryStr (x,y,z)) & y in InputVertices (GFA3CarryStr (x,y,z)) & z in InputVertices (GFA3CarryStr (x,y,z)) ) ) assume ( x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] ) ; ::_thesis: ( x in InputVertices (GFA3CarryStr (x,y,z)) & y in InputVertices (GFA3CarryStr (x,y,z)) & z in InputVertices (GFA3CarryStr (x,y,z)) ) then InputVertices (GFA3CarryStr (x,y,z)) = {x,y,z} by Th109; hence ( x in InputVertices (GFA3CarryStr (x,y,z)) & y in InputVertices (GFA3CarryStr (x,y,z)) & z in InputVertices (GFA3CarryStr (x,y,z)) ) by ENUMSET1:def_1; ::_thesis: verum end; theorem Th114: :: GFACIRC1:114 for x, y, z being non pair set holds InputVertices (GFA3CarryStr (x,y,z)) = {x,y,z} proof let x, y, z be non pair set ; ::_thesis: InputVertices (GFA3CarryStr (x,y,z)) = {x,y,z} set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; set f4 = nor3 ; set xy = [<*x,y*>,and2b]; set yz = [<*y,z*>,and2b]; set zx = [<*z,x*>,and2b]; set Cxy = 1GateCircStr (<*x,y*>,and2b); set Cyz = 1GateCircStr (<*y,z*>,and2b); set Czx = 1GateCircStr (<*z,x*>,and2b); set M = GFA3CarryStr (x,y,z); set MI = GFA3CarryIStr (x,y,z); set S = 1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3); A1: ( InputVertices (1GateCircStr (<*x,y*>,and2b)) = {x,y} & InputVertices (1GateCircStr (<*y,z*>,and2b)) = {y,z} ) by FACIRC_1:40; A2: InputVertices (1GateCircStr (<*z,x*>,and2b)) = {z,x} by FACIRC_1:40; A3: InputVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)) = {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} by FACIRC_1:42; A4: InnerVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3)) is Relation by FACIRC_1:38; A5: ( InnerVertices (1GateCircStr (<*x,y*>,and2b)) = {[<*x,y*>,and2b]} & InnerVertices (1GateCircStr (<*y,z*>,and2b)) = {[<*y,z*>,and2b]} ) by CIRCCOMB:42; 1GateCircStr (<*x,y*>,and2b) tolerates 1GateCircStr (<*y,z*>,and2b) by CIRCCOMB:47; then A6: ( InnerVertices (1GateCircStr (<*z,x*>,and2b)) = {[<*z,x*>,and2b]} & InnerVertices ((1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b))) = {[<*x,y*>,and2b]} \/ {[<*y,z*>,and2b]} ) by A5, CIRCCOMB:11, CIRCCOMB:42; (1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b)) tolerates 1GateCircStr (<*z,x*>,and2b) by CIRCCOMB:47; then InnerVertices (GFA3CarryIStr (x,y,z)) = ({[<*x,y*>,and2b]} \/ {[<*y,z*>,and2b]}) \/ {[<*z,x*>,and2b]} by A6, CIRCCOMB:11 .= {[<*x,y*>,and2b],[<*y,z*>,and2b]} \/ {[<*z,x*>,and2b]} by ENUMSET1:1 .= {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} by ENUMSET1:3 ; then A7: (InputVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3))) \ (InnerVertices (GFA3CarryIStr (x,y,z))) = {} by A3, XBOOLE_1:37; A8: ( InputVertices (1GateCircStr (<*x,y*>,and2b)) is without_pairs & InputVertices (1GateCircStr (<*y,z*>,and2b)) is without_pairs ) by FACIRC_1:41; then A9: ( InputVertices (1GateCircStr (<*z,x*>,and2b)) is without_pairs & InputVertices ((1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b))) is without_pairs ) by FACIRC_1:9, FACIRC_1:41; then InputVertices (GFA3CarryIStr (x,y,z)) is without_pairs by FACIRC_1:9; then InputVertices (GFA3CarryStr (x,y,z)) = (InputVertices (GFA3CarryIStr (x,y,z))) \/ ((InputVertices (1GateCircStr (<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3))) \ (InnerVertices (GFA3CarryIStr (x,y,z)))) by A4, FACIRC_1:6; hence InputVertices (GFA3CarryStr (x,y,z)) = (InputVertices ((1GateCircStr (<*x,y*>,and2b)) +* (1GateCircStr (<*y,z*>,and2b)))) \/ (InputVertices (1GateCircStr (<*z,x*>,and2b))) by A9, A6, A7, FACIRC_1:7 .= ((InputVertices (1GateCircStr (<*x,y*>,and2b))) \/ (InputVertices (1GateCircStr (<*y,z*>,and2b)))) \/ (InputVertices (1GateCircStr (<*z,x*>,and2b))) by A8, A5, FACIRC_1:7 .= {x,y,y,z} \/ {z,x} by A1, A2, ENUMSET1:5 .= {y,y,x,z} \/ {z,x} by ENUMSET1:67 .= {y,x,z} \/ {z,x} by ENUMSET1:31 .= {x,y,z} \/ {z,x} by ENUMSET1:58 .= {x,y,z} \/ ({z} \/ {x}) by ENUMSET1:1 .= ({x,y,z} \/ {z}) \/ {x} by XBOOLE_1:4 .= ({z,x,y} \/ {z}) \/ {x} by ENUMSET1:59 .= {z,z,x,y} \/ {x} by ENUMSET1:4 .= {z,x,y} \/ {x} by ENUMSET1:31 .= {x,y,z} \/ {x} by ENUMSET1:59 .= {x,x,y,z} by ENUMSET1:4 .= {x,y,z} by ENUMSET1:31 ; ::_thesis: verum end; theorem Th115: :: GFACIRC1:115 for x, y, z being set for s being State of (GFA3CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,and2b] = ('not' a1) '&' ('not' a2) & (Following s) . [<*y,z*>,and2b] = ('not' a2) '&' ('not' a3) & (Following s) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) proof let x, y, z be set ; ::_thesis: for s being State of (GFA3CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,and2b] = ('not' a1) '&' ('not' a2) & (Following s) . [<*y,z*>,and2b] = ('not' a2) '&' ('not' a3) & (Following s) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; let s be State of (GFA3CarryCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,and2b] = ('not' a1) '&' ('not' a2) & (Following s) . [<*y,z*>,and2b] = ('not' a2) '&' ('not' a3) & (Following s) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) set xy = [<*x,y*>,and2b]; set yz = [<*y,z*>,and2b]; set zx = [<*z,x*>,and2b]; let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies ( (Following s) . [<*x,y*>,and2b] = ('not' a1) '&' ('not' a2) & (Following s) . [<*y,z*>,and2b] = ('not' a2) '&' ('not' a3) & (Following s) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) ) assume that A1: a1 = s . x and A2: a2 = s . y and A3: a3 = s . z ; ::_thesis: ( (Following s) . [<*x,y*>,and2b] = ('not' a1) '&' ('not' a2) & (Following s) . [<*y,z*>,and2b] = ('not' a2) '&' ('not' a3) & (Following s) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) set S = GFA3CarryStr (x,y,z); A4: InnerVertices (GFA3CarryStr (x,y,z)) = the carrier' of (GFA3CarryStr (x,y,z)) by FACIRC_1:37; A5: y in the carrier of (GFA3CarryStr (x,y,z)) by Th111; A6: x in the carrier of (GFA3CarryStr (x,y,z)) by Th111; A7: dom s = the carrier of (GFA3CarryStr (x,y,z)) by CIRCUIT1:3; [<*x,y*>,and2b] in InnerVertices (GFA3CarryStr (x,y,z)) by Th112; hence (Following s) . [<*x,y*>,and2b] = and2b . (s * <*x,y*>) by A4, FACIRC_1:35 .= and2b . <*a1,a2*> by A1, A2, A7, A6, A5, FINSEQ_2:125 .= ('not' a1) '&' ('not' a2) by TWOSCOMP:def_3 ; ::_thesis: ( (Following s) . [<*y,z*>,and2b] = ('not' a2) '&' ('not' a3) & (Following s) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) A8: z in the carrier of (GFA3CarryStr (x,y,z)) by Th111; [<*y,z*>,and2b] in InnerVertices (GFA3CarryStr (x,y,z)) by Th112; hence (Following s) . [<*y,z*>,and2b] = and2b . (s * <*y,z*>) by A4, FACIRC_1:35 .= and2b . <*a2,a3*> by A2, A3, A7, A5, A8, FINSEQ_2:125 .= ('not' a2) '&' ('not' a3) by TWOSCOMP:def_3 ; ::_thesis: (Following s) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) [<*z,x*>,and2b] in InnerVertices (GFA3CarryStr (x,y,z)) by Th112; hence (Following s) . [<*z,x*>,and2b] = and2b . (s * <*z,x*>) by A4, FACIRC_1:35 .= and2b . <*a3,a1*> by A1, A3, A7, A6, A8, FINSEQ_2:125 .= ('not' a3) '&' ('not' a1) by TWOSCOMP:def_3 ; ::_thesis: verum end; theorem Th116: :: GFACIRC1:116 for x, y, z being set for s being State of (GFA3CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . [<*x,y*>,and2b] & a2 = s . [<*y,z*>,and2b] & a3 = s . [<*z,x*>,and2b] holds (Following s) . (GFA3CarryOutput (x,y,z)) = 'not' ((a1 'or' a2) 'or' a3) proof let x, y, z be set ; ::_thesis: for s being State of (GFA3CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . [<*x,y*>,and2b] & a2 = s . [<*y,z*>,and2b] & a3 = s . [<*z,x*>,and2b] holds (Following s) . (GFA3CarryOutput (x,y,z)) = 'not' ((a1 'or' a2) 'or' a3) set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; set f4 = nor3 ; let s be State of (GFA3CarryCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . [<*x,y*>,and2b] & a2 = s . [<*y,z*>,and2b] & a3 = s . [<*z,x*>,and2b] holds (Following s) . (GFA3CarryOutput (x,y,z)) = 'not' ((a1 'or' a2) 'or' a3) set xy = [<*x,y*>,and2b]; set yz = [<*y,z*>,and2b]; set zx = [<*z,x*>,and2b]; let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . [<*x,y*>,and2b] & a2 = s . [<*y,z*>,and2b] & a3 = s . [<*z,x*>,and2b] implies (Following s) . (GFA3CarryOutput (x,y,z)) = 'not' ((a1 'or' a2) 'or' a3) ) assume A1: ( a1 = s . [<*x,y*>,and2b] & a2 = s . [<*y,z*>,and2b] & a3 = s . [<*z,x*>,and2b] ) ; ::_thesis: (Following s) . (GFA3CarryOutput (x,y,z)) = 'not' ((a1 'or' a2) 'or' a3) set S = GFA3CarryStr (x,y,z); reconsider xy = [<*x,y*>,and2b], yz = [<*y,z*>,and2b], zx = [<*z,x*>,and2b] as Element of InnerVertices (GFA3CarryStr (x,y,z)) by Th112; A2: dom s = the carrier of (GFA3CarryStr (x,y,z)) by CIRCUIT1:3; InnerVertices (GFA3CarryStr (x,y,z)) = the carrier' of (GFA3CarryStr (x,y,z)) by FACIRC_1:37; hence (Following s) . (GFA3CarryOutput (x,y,z)) = nor3 . (s * <*xy,yz,zx*>) by FACIRC_1:35 .= nor3 . <*a1,a2,a3*> by A1, A2, FINSEQ_2:126 .= 'not' ((a1 'or' a2) 'or' a3) by TWOSCOMP:def_28 ; ::_thesis: verum end; theorem Th117: :: GFACIRC1:117 for x, y, z being set st x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] holds for s being State of (GFA3CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA3CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' ('not' a2)) 'or' (('not' a2) '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) & (Following (s,2)) . [<*x,y*>,and2b] = ('not' a1) '&' ('not' a2) & (Following (s,2)) . [<*y,z*>,and2b] = ('not' a2) '&' ('not' a3) & (Following (s,2)) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) proof set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] implies for s being State of (GFA3CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA3CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' ('not' a2)) 'or' (('not' a2) '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) & (Following (s,2)) . [<*x,y*>,and2b] = ('not' a1) '&' ('not' a2) & (Following (s,2)) . [<*y,z*>,and2b] = ('not' a2) '&' ('not' a3) & (Following (s,2)) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) ) assume A1: ( x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] ) ; ::_thesis: for s being State of (GFA3CarryCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA3CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' ('not' a2)) 'or' (('not' a2) '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) & (Following (s,2)) . [<*x,y*>,and2b] = ('not' a1) '&' ('not' a2) & (Following (s,2)) . [<*y,z*>,and2b] = ('not' a2) '&' ('not' a3) & (Following (s,2)) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) set S = GFA3CarryStr (x,y,z); reconsider x9 = x, y9 = y, z9 = z as Vertex of (GFA3CarryStr (x,y,z)) by Th111; let s be State of (GFA3CarryCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA3CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' ('not' a2)) 'or' (('not' a2) '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) & (Following (s,2)) . [<*x,y*>,and2b] = ('not' a1) '&' ('not' a2) & (Following (s,2)) . [<*y,z*>,and2b] = ('not' a2) '&' ('not' a3) & (Following (s,2)) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) y in InputVertices (GFA3CarryStr (x,y,z)) by A1, Th113; then A2: (Following s) . y9 = s . y by CIRCUIT2:def_5; z in InputVertices (GFA3CarryStr (x,y,z)) by A1, Th113; then A3: (Following s) . z9 = s . z by CIRCUIT2:def_5; set xy = [<*x,y*>,and2b]; set yz = [<*y,z*>,and2b]; set zx = [<*z,x*>,and2b]; A4: Following (s,2) = Following (Following s) by FACIRC_1:15; let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies ( (Following (s,2)) . (GFA3CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' ('not' a2)) 'or' (('not' a2) '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) & (Following (s,2)) . [<*x,y*>,and2b] = ('not' a1) '&' ('not' a2) & (Following (s,2)) . [<*y,z*>,and2b] = ('not' a2) '&' ('not' a3) & (Following (s,2)) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) ) assume A5: ( a1 = s . x & a2 = s . y & a3 = s . z ) ; ::_thesis: ( (Following (s,2)) . (GFA3CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' ('not' a2)) 'or' (('not' a2) '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) & (Following (s,2)) . [<*x,y*>,and2b] = ('not' a1) '&' ('not' a2) & (Following (s,2)) . [<*y,z*>,and2b] = ('not' a2) '&' ('not' a3) & (Following (s,2)) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) A6: (Following s) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) by A5, Th115; ( (Following s) . [<*x,y*>,and2b] = ('not' a1) '&' ('not' a2) & (Following s) . [<*y,z*>,and2b] = ('not' a2) '&' ('not' a3) ) by A5, Th115; hence (Following (s,2)) . (GFA3CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' ('not' a2)) 'or' (('not' a2) '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) by A4, A6, Th116; ::_thesis: ( (Following (s,2)) . [<*x,y*>,and2b] = ('not' a1) '&' ('not' a2) & (Following (s,2)) . [<*y,z*>,and2b] = ('not' a2) '&' ('not' a3) & (Following (s,2)) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) x in InputVertices (GFA3CarryStr (x,y,z)) by A1, Th113; then (Following s) . x9 = s . x by CIRCUIT2:def_5; hence ( (Following (s,2)) . [<*x,y*>,and2b] = ('not' a1) '&' ('not' a2) & (Following (s,2)) . [<*y,z*>,and2b] = ('not' a2) '&' ('not' a3) & (Following (s,2)) . [<*z,x*>,and2b] = ('not' a3) '&' ('not' a1) ) by A5, A2, A3, A4, Th115; ::_thesis: verum end; theorem Th118: :: GFACIRC1:118 for x, y, z being set st x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] holds for s being State of (GFA3CarryCirc (x,y,z)) holds Following (s,2) is stable proof set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; let x, y, z be set ; ::_thesis: ( x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] implies for s being State of (GFA3CarryCirc (x,y,z)) holds Following (s,2) is stable ) assume A1: ( x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] ) ; ::_thesis: for s being State of (GFA3CarryCirc (x,y,z)) holds Following (s,2) is stable set S = GFA3CarryStr (x,y,z); reconsider xx = x, yy = y, zz = z as Vertex of (GFA3CarryStr (x,y,z)) by Th111; let s be State of (GFA3CarryCirc (x,y,z)); ::_thesis: Following (s,2) is stable set a1 = s . xx; set a2 = s . yy; set a3 = s . zz; set ffs = Following (s,2); set fffs = Following (Following (s,2)); set xy = [<*x,y*>,and2b]; set yz = [<*y,z*>,and2b]; set zx = [<*z,x*>,and2b]; A2: Following (s,2) = Following (Following s) by FACIRC_1:15; A3: z in InputVertices (GFA3CarryStr (x,y,z)) by A1, Th113; then (Following s) . z = s . zz by CIRCUIT2:def_5; then A4: (Following (s,2)) . z = s . zz by A2, A3, CIRCUIT2:def_5; A5: y in InputVertices (GFA3CarryStr (x,y,z)) by A1, Th113; then (Following s) . y = s . yy by CIRCUIT2:def_5; then A6: (Following (s,2)) . y = s . yy by A2, A5, CIRCUIT2:def_5; A7: x in InputVertices (GFA3CarryStr (x,y,z)) by A1, Th113; then (Following s) . x = s . xx by CIRCUIT2:def_5; then A8: (Following (s,2)) . x = s . xx by A2, A7, CIRCUIT2:def_5; s . zz = s . z ; then A9: (Following (s,2)) . [<*x,y*>,and2b] = ('not' (s . xx)) '&' ('not' (s . yy)) by A1, Th117; s . yy = s . y ; then A10: (Following (s,2)) . [<*z,x*>,and2b] = ('not' (s . xx)) '&' ('not' (s . zz)) by A1, Th117; s . xx = s . x ; then A11: (Following (s,2)) . [<*y,z*>,and2b] = ('not' (s . yy)) '&' ('not' (s . zz)) by A1, Th117; A12: (Following (s,2)) . (GFA3CarryOutput (x,y,z)) = 'not' (((('not' (s . xx)) '&' ('not' (s . yy))) 'or' (('not' (s . yy)) '&' ('not' (s . zz)))) 'or' (('not' (s . zz)) '&' ('not' (s . xx)))) by A1, Th117; A13: now__::_thesis:_for_a_being_set_st_a_in_the_carrier_of_(GFA3CarryStr_(x,y,z))_holds_ (Following_(s,2))_._a_=_(Following_(Following_(s,2)))_._a let a be set ; ::_thesis: ( a in the carrier of (GFA3CarryStr (x,y,z)) implies (Following (s,2)) . a = (Following (Following (s,2))) . a ) assume A14: a in the carrier of (GFA3CarryStr (x,y,z)) ; ::_thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a then reconsider v = a as Vertex of (GFA3CarryStr (x,y,z)) ; A15: v in (InputVertices (GFA3CarryStr (x,y,z))) \/ (InnerVertices (GFA3CarryStr (x,y,z))) by A14, XBOOLE_1:45; thus (Following (s,2)) . a = (Following (Following (s,2))) . a ::_thesis: verum proof percases ( v in InputVertices (GFA3CarryStr (x,y,z)) or v in InnerVertices (GFA3CarryStr (x,y,z)) ) by A15, XBOOLE_0:def_3; suppose v in InputVertices (GFA3CarryStr (x,y,z)) ; ::_thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a hence (Following (s,2)) . a = (Following (Following (s,2))) . a by CIRCUIT2:def_5; ::_thesis: verum end; suppose v in InnerVertices (GFA3CarryStr (x,y,z)) ; ::_thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a then v in {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} \/ {(GFA3CarryOutput (x,y,z))} by Th106; then ( v in {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} or v in {(GFA3CarryOutput (x,y,z))} ) by XBOOLE_0:def_3; then ( v = [<*x,y*>,and2b] or v = [<*y,z*>,and2b] or v = [<*z,x*>,and2b] or v = GFA3CarryOutput (x,y,z) ) by ENUMSET1:def_1, TARSKI:def_1; hence (Following (s,2)) . a = (Following (Following (s,2))) . a by A12, A9, A11, A10, A8, A6, A4, Th115, Th116; ::_thesis: verum end; end; end; end; ( dom (Following (Following (s,2))) = the carrier of (GFA3CarryStr (x,y,z)) & dom (Following (s,2)) = the carrier of (GFA3CarryStr (x,y,z)) ) by CIRCUIT1:3; hence Following (s,2) = Following (Following (s,2)) by A13, FUNCT_1:2; :: according to CIRCUIT2:def_6 ::_thesis: verum end; definition let x, y, z be set ; func GFA3AdderStr (x,y,z) -> non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: GFACIRC1:def 46 2GatesCircStr (x,y,z,xor2); coherence 2GatesCircStr (x,y,z,xor2) is non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign ; end; :: deftheorem defines GFA3AdderStr GFACIRC1:def_46_:_ for x, y, z being set holds GFA3AdderStr (x,y,z) = 2GatesCircStr (x,y,z,xor2); definition let x, y, z be set ; func GFA3AdderCirc (x,y,z) -> strict gate`2=den Boolean Circuit of GFA3AdderStr (x,y,z) equals :: GFACIRC1:def 47 2GatesCircuit (x,y,z,xor2); coherence 2GatesCircuit (x,y,z,xor2) is strict gate`2=den Boolean Circuit of GFA3AdderStr (x,y,z) ; end; :: deftheorem defines GFA3AdderCirc GFACIRC1:def_47_:_ for x, y, z being set holds GFA3AdderCirc (x,y,z) = 2GatesCircuit (x,y,z,xor2); definition let x, y, z be set ; func GFA3AdderOutput (x,y,z) -> Element of InnerVertices (GFA3AdderStr (x,y,z)) equals :: GFACIRC1:def 48 2GatesCircOutput (x,y,z,xor2); coherence 2GatesCircOutput (x,y,z,xor2) is Element of InnerVertices (GFA3AdderStr (x,y,z)) ; end; :: deftheorem defines GFA3AdderOutput GFACIRC1:def_48_:_ for x, y, z being set holds GFA3AdderOutput (x,y,z) = 2GatesCircOutput (x,y,z,xor2); theorem Th119: :: GFACIRC1:119 for x, y, z being set holds InnerVertices (GFA3AdderStr (x,y,z)) = {[<*x,y*>,xor2]} \/ {(GFA3AdderOutput (x,y,z))} proof let x, y, z be set ; ::_thesis: InnerVertices (GFA3AdderStr (x,y,z)) = {[<*x,y*>,xor2]} \/ {(GFA3AdderOutput (x,y,z))} GFA3AdderOutput (x,y,z) = GFA0AdderOutput (x,y,z) ; hence InnerVertices (GFA3AdderStr (x,y,z)) = {[<*x,y*>,xor2]} \/ {(GFA3AdderOutput (x,y,z))} by Th24; ::_thesis: verum end; theorem :: GFACIRC1:120 for x, y, z being set holds ( x in the carrier of (GFA3AdderStr (x,y,z)) & y in the carrier of (GFA3AdderStr (x,y,z)) & z in the carrier of (GFA3AdderStr (x,y,z)) & [<*x,y*>,xor2] in the carrier of (GFA3AdderStr (x,y,z)) & [<*[<*x,y*>,xor2],z*>,xor2] in the carrier of (GFA3AdderStr (x,y,z)) ) by FACIRC_1:60, FACIRC_1:61; theorem :: GFACIRC1:121 for x, y, z being set holds ( [<*x,y*>,xor2] in InnerVertices (GFA3AdderStr (x,y,z)) & GFA3AdderOutput (x,y,z) in InnerVertices (GFA3AdderStr (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( [<*x,y*>,xor2] in InnerVertices (GFA3AdderStr (x,y,z)) & GFA3AdderOutput (x,y,z) in InnerVertices (GFA3AdderStr (x,y,z)) ) set S0 = GFA0AdderStr (x,y,z); GFA3AdderStr (x,y,z) = GFA0AdderStr (x,y,z) ; hence ( [<*x,y*>,xor2] in InnerVertices (GFA3AdderStr (x,y,z)) & GFA3AdderOutput (x,y,z) in InnerVertices (GFA3AdderStr (x,y,z)) ) by Th26; ::_thesis: verum end; theorem :: GFACIRC1:122 for x, y, z being set st z <> [<*x,y*>,xor2] holds ( x in InputVertices (GFA3AdderStr (x,y,z)) & y in InputVertices (GFA3AdderStr (x,y,z)) & z in InputVertices (GFA3AdderStr (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2] implies ( x in InputVertices (GFA3AdderStr (x,y,z)) & y in InputVertices (GFA3AdderStr (x,y,z)) & z in InputVertices (GFA3AdderStr (x,y,z)) ) ) assume A1: z <> [<*x,y*>,xor2] ; ::_thesis: ( x in InputVertices (GFA3AdderStr (x,y,z)) & y in InputVertices (GFA3AdderStr (x,y,z)) & z in InputVertices (GFA3AdderStr (x,y,z)) ) set S0 = GFA0AdderStr (x,y,z); GFA3AdderStr (x,y,z) = GFA0AdderStr (x,y,z) ; hence ( x in InputVertices (GFA3AdderStr (x,y,z)) & y in InputVertices (GFA3AdderStr (x,y,z)) & z in InputVertices (GFA3AdderStr (x,y,z)) ) by A1, Th27; ::_thesis: verum end; theorem :: GFACIRC1:123 for x, y, z being set st z <> [<*x,y*>,xor2] holds for s being State of (GFA3AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) proof set f = xor2 ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2] implies for s being State of (GFA3AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) ) assume A1: z <> [<*x,y*>,xor2] ; ::_thesis: for s being State of (GFA3AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) set A0 = GFA0AdderCirc (x,y,z); set A3 = GFA3AdderCirc (x,y,z); GFA3AdderCirc (x,y,z) = GFA0AdderCirc (x,y,z) ; hence for s being State of (GFA3AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following s) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following s) . x = a1 & (Following s) . y = a2 & (Following s) . z = a3 ) by A1, Th28; ::_thesis: verum end; theorem :: GFACIRC1:124 for x, y, z being set st z <> [<*x,y*>,xor2] holds for s being State of (GFA3AdderCirc (x,y,z)) for a1a2, a1, a2, a3 being Element of BOOLEAN st a1a2 = s . [<*x,y*>,xor2] & a1 = s . x & a2 = s . y & a3 = s . z holds (Following s) . (GFA3AdderOutput (x,y,z)) = a1a2 'xor' a3 proof set f = xor2 ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2] implies for s being State of (GFA3AdderCirc (x,y,z)) for a1a2, a1, a2, a3 being Element of BOOLEAN st a1a2 = s . [<*x,y*>,xor2] & a1 = s . x & a2 = s . y & a3 = s . z holds (Following s) . (GFA3AdderOutput (x,y,z)) = a1a2 'xor' a3 ) assume A1: z <> [<*x,y*>,xor2] ; ::_thesis: for s being State of (GFA3AdderCirc (x,y,z)) for a1a2, a1, a2, a3 being Element of BOOLEAN st a1a2 = s . [<*x,y*>,xor2] & a1 = s . x & a2 = s . y & a3 = s . z holds (Following s) . (GFA3AdderOutput (x,y,z)) = a1a2 'xor' a3 set O0 = GFA0AdderOutput (x,y,z); set O3 = GFA3AdderOutput (x,y,z); set A0 = GFA0AdderCirc (x,y,z); set A3 = GFA3AdderCirc (x,y,z); ( GFA3AdderCirc (x,y,z) = GFA0AdderCirc (x,y,z) & GFA3AdderOutput (x,y,z) = GFA0AdderOutput (x,y,z) ) ; hence for s being State of (GFA3AdderCirc (x,y,z)) for a1a2, a1, a2, a3 being Element of BOOLEAN st a1a2 = s . [<*x,y*>,xor2] & a1 = s . x & a2 = s . y & a3 = s . z holds (Following s) . (GFA3AdderOutput (x,y,z)) = a1a2 'xor' a3 by A1, Th29; ::_thesis: verum end; theorem Th125: :: GFACIRC1:125 for x, y, z being set st z <> [<*x,y*>,xor2] holds for s being State of (GFA3AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA3AdderOutput (x,y,z)) = (a1 'xor' a2) 'xor' a3 & (Following (s,2)) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) proof set f = xor2 ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2] implies for s being State of (GFA3AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA3AdderOutput (x,y,z)) = (a1 'xor' a2) 'xor' a3 & (Following (s,2)) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) ) assume A1: z <> [<*x,y*>,xor2] ; ::_thesis: for s being State of (GFA3AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA3AdderOutput (x,y,z)) = (a1 'xor' a2) 'xor' a3 & (Following (s,2)) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) set O0 = GFA0AdderOutput (x,y,z); set O3 = GFA3AdderOutput (x,y,z); set A0 = GFA0AdderCirc (x,y,z); set A3 = GFA3AdderCirc (x,y,z); ( GFA3AdderCirc (x,y,z) = GFA0AdderCirc (x,y,z) & GFA3AdderOutput (x,y,z) = GFA0AdderOutput (x,y,z) ) ; hence for s being State of (GFA3AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA3AdderOutput (x,y,z)) = (a1 'xor' a2) 'xor' a3 & (Following (s,2)) . [<*x,y*>,xor2] = a1 'xor' a2 & (Following (s,2)) . x = a1 & (Following (s,2)) . y = a2 & (Following (s,2)) . z = a3 ) by A1, Th30; ::_thesis: verum end; theorem Th126: :: GFACIRC1:126 for x, y, z being set st z <> [<*x,y*>,xor2] holds for s being State of (GFA3AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds (Following (s,2)) . (GFA3AdderOutput (x,y,z)) = 'not' ((('not' a1) 'xor' ('not' a2)) 'xor' ('not' a3)) proof set f = xor2 ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2] implies for s being State of (GFA3AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds (Following (s,2)) . (GFA3AdderOutput (x,y,z)) = 'not' ((('not' a1) 'xor' ('not' a2)) 'xor' ('not' a3)) ) assume A1: z <> [<*x,y*>,xor2] ; ::_thesis: for s being State of (GFA3AdderCirc (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds (Following (s,2)) . (GFA3AdderOutput (x,y,z)) = 'not' ((('not' a1) 'xor' ('not' a2)) 'xor' ('not' a3)) set A = GFA3AdderCirc (x,y,z); let s be State of (GFA3AdderCirc (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds (Following (s,2)) . (GFA3AdderOutput (x,y,z)) = 'not' ((('not' a1) 'xor' ('not' a2)) 'xor' ('not' a3)) let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies (Following (s,2)) . (GFA3AdderOutput (x,y,z)) = 'not' ((('not' a1) 'xor' ('not' a2)) 'xor' ('not' a3)) ) assume ( a1 = s . x & a2 = s . y & a3 = s . z ) ; ::_thesis: (Following (s,2)) . (GFA3AdderOutput (x,y,z)) = 'not' ((('not' a1) 'xor' ('not' a2)) 'xor' ('not' a3)) hence (Following (s,2)) . (GFA3AdderOutput (x,y,z)) = (a1 'xor' a2) 'xor' a3 by A1, Th125 .= 'not' ((('not' a1) 'xor' ('not' a2)) 'xor' ('not' a3)) by XBOOLEAN:74 ; ::_thesis: verum end; definition let x, y, z be set ; func BitGFA3Str (x,y,z) -> non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: GFACIRC1:def 49 (GFA3AdderStr (x,y,z)) +* (GFA3CarryStr (x,y,z)); coherence (GFA3AdderStr (x,y,z)) +* (GFA3CarryStr (x,y,z)) is non empty non void strict unsplit gate`1=arity gate`2isBoolean ManySortedSign ; end; :: deftheorem defines BitGFA3Str GFACIRC1:def_49_:_ for x, y, z being set holds BitGFA3Str (x,y,z) = (GFA3AdderStr (x,y,z)) +* (GFA3CarryStr (x,y,z)); definition let x, y, z be set ; func BitGFA3Circ (x,y,z) -> strict gate`2=den Boolean Circuit of BitGFA3Str (x,y,z) equals :: GFACIRC1:def 50 (GFA3AdderCirc (x,y,z)) +* (GFA3CarryCirc (x,y,z)); coherence (GFA3AdderCirc (x,y,z)) +* (GFA3CarryCirc (x,y,z)) is strict gate`2=den Boolean Circuit of BitGFA3Str (x,y,z) ; end; :: deftheorem defines BitGFA3Circ GFACIRC1:def_50_:_ for x, y, z being set holds BitGFA3Circ (x,y,z) = (GFA3AdderCirc (x,y,z)) +* (GFA3CarryCirc (x,y,z)); theorem Th127: :: GFACIRC1:127 for x, y, z being set holds InnerVertices (BitGFA3Str (x,y,z)) = (({[<*x,y*>,xor2]} \/ {(GFA3AdderOutput (x,y,z))}) \/ {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]}) \/ {(GFA3CarryOutput (x,y,z))} proof let x, y, z be set ; ::_thesis: InnerVertices (BitGFA3Str (x,y,z)) = (({[<*x,y*>,xor2]} \/ {(GFA3AdderOutput (x,y,z))}) \/ {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]}) \/ {(GFA3CarryOutput (x,y,z))} set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; set f0 = xor2 ; set xyf0 = [<*x,y*>,xor2]; set xyf1 = [<*x,y*>,and2b]; set yzf2 = [<*y,z*>,and2b]; set zxf3 = [<*z,x*>,and2b]; set S = BitGFA3Str (x,y,z); set S1 = GFA3AdderStr (x,y,z); set S2 = GFA3CarryStr (x,y,z); set A1 = GFA3AdderOutput (x,y,z); set A2 = GFA3CarryOutput (x,y,z); thus InnerVertices (BitGFA3Str (x,y,z)) = (InnerVertices (GFA3AdderStr (x,y,z))) \/ (InnerVertices (GFA3CarryStr (x,y,z))) by FACIRC_1:27 .= ({[<*x,y*>,xor2]} \/ {(GFA3AdderOutput (x,y,z))}) \/ (InnerVertices (GFA3CarryStr (x,y,z))) by Th119 .= ({[<*x,y*>,xor2]} \/ {(GFA3AdderOutput (x,y,z))}) \/ ({[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} \/ {(GFA3CarryOutput (x,y,z))}) by Th106 .= (({[<*x,y*>,xor2]} \/ {(GFA3AdderOutput (x,y,z))}) \/ {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]}) \/ {(GFA3CarryOutput (x,y,z))} by XBOOLE_1:4 ; ::_thesis: verum end; theorem :: GFACIRC1:128 for x, y, z being set holds InnerVertices (BitGFA3Str (x,y,z)) is Relation proof let x, y, z be set ; ::_thesis: InnerVertices (BitGFA3Str (x,y,z)) is Relation set S1 = GFA3AdderStr (x,y,z); set S2 = GFA3CarryStr (x,y,z); ( InnerVertices (GFA3AdderStr (x,y,z)) is Relation & InnerVertices (GFA3CarryStr (x,y,z)) is Relation ) by Th107, FACIRC_1:58; hence InnerVertices (BitGFA3Str (x,y,z)) is Relation by FACIRC_1:3; ::_thesis: verum end; theorem Th129: :: GFACIRC1:129 for x, y, z being set st z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] holds InputVertices (BitGFA3Str (x,y,z)) = {x,y,z} proof set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; set f0 = xor2 ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] implies InputVertices (BitGFA3Str (x,y,z)) = {x,y,z} ) assume A1: ( z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] ) ; ::_thesis: InputVertices (BitGFA3Str (x,y,z)) = {x,y,z} set S2 = GFA3CarryStr (x,y,z); set S1 = GFA3AdderStr (x,y,z); ( InputVertices (GFA3AdderStr (x,y,z)) = {x,y,z} & InputVertices (GFA3CarryStr (x,y,z)) = {x,y,z} ) by A1, Th109, FACIRC_1:57; hence InputVertices (BitGFA3Str (x,y,z)) = {x,y,z} by CIRCCOMB:47, FACIRC_2:21; ::_thesis: verum end; theorem Th130: :: GFACIRC1:130 for x, y, z being non pair set holds InputVertices (BitGFA3Str (x,y,z)) = {x,y,z} proof let x, y, z be non pair set ; ::_thesis: InputVertices (BitGFA3Str (x,y,z)) = {x,y,z} set S = BitGFA3Str (x,y,z); set S1 = GFA3AdderStr (x,y,z); set S2 = GFA3CarryStr (x,y,z); A1: ( InputVertices (GFA3AdderStr (x,y,z)) = {x,y,z} & InputVertices (GFA3CarryStr (x,y,z)) = {x,y,z} ) by Th114, FACIRC_1:57; ( InnerVertices (GFA3AdderStr (x,y,z)) is Relation & InnerVertices (GFA3CarryStr (x,y,z)) is Relation ) by Th107, FACIRC_1:58; hence InputVertices (BitGFA3Str (x,y,z)) = {x,y,z} \/ {x,y,z} by A1, FACIRC_1:7 .= {x,y,z} ; ::_thesis: verum end; theorem :: GFACIRC1:131 for x, y, z being non pair set holds InputVertices (BitGFA3Str (x,y,z)) is without_pairs proof let x, y, z be non pair set ; ::_thesis: InputVertices (BitGFA3Str (x,y,z)) is without_pairs InputVertices (BitGFA3Str (x,y,z)) = {x,y,z} by Th130; hence InputVertices (BitGFA3Str (x,y,z)) is without_pairs ; ::_thesis: verum end; theorem :: GFACIRC1:132 for x, y, z being set holds ( x in the carrier of (BitGFA3Str (x,y,z)) & y in the carrier of (BitGFA3Str (x,y,z)) & z in the carrier of (BitGFA3Str (x,y,z)) & [<*x,y*>,xor2] in the carrier of (BitGFA3Str (x,y,z)) & [<*[<*x,y*>,xor2],z*>,xor2] in the carrier of (BitGFA3Str (x,y,z)) & [<*x,y*>,and2b] in the carrier of (BitGFA3Str (x,y,z)) & [<*y,z*>,and2b] in the carrier of (BitGFA3Str (x,y,z)) & [<*z,x*>,and2b] in the carrier of (BitGFA3Str (x,y,z)) & [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3] in the carrier of (BitGFA3Str (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( x in the carrier of (BitGFA3Str (x,y,z)) & y in the carrier of (BitGFA3Str (x,y,z)) & z in the carrier of (BitGFA3Str (x,y,z)) & [<*x,y*>,xor2] in the carrier of (BitGFA3Str (x,y,z)) & [<*[<*x,y*>,xor2],z*>,xor2] in the carrier of (BitGFA3Str (x,y,z)) & [<*x,y*>,and2b] in the carrier of (BitGFA3Str (x,y,z)) & [<*y,z*>,and2b] in the carrier of (BitGFA3Str (x,y,z)) & [<*z,x*>,and2b] in the carrier of (BitGFA3Str (x,y,z)) & [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3] in the carrier of (BitGFA3Str (x,y,z)) ) set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; set f4 = nor3 ; set f0 = xor2 ; set xy = [<*x,y*>,and2b]; set yz = [<*y,z*>,and2b]; set zx = [<*z,x*>,and2b]; set xyz = [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3]; set S1 = GFA3AdderStr (x,y,z); set S2 = GFA3CarryStr (x,y,z); A1: ( x in the carrier of (GFA3AdderStr (x,y,z)) & y in the carrier of (GFA3AdderStr (x,y,z)) ) by FACIRC_1:60; A2: ( z in the carrier of (GFA3AdderStr (x,y,z)) & [<*x,y*>,xor2] in the carrier of (GFA3AdderStr (x,y,z)) ) by FACIRC_1:60, FACIRC_1:61; A3: [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3] in the carrier of (GFA3CarryStr (x,y,z)) by Th111; A4: ( [<*y,z*>,and2b] in the carrier of (GFA3CarryStr (x,y,z)) & [<*z,x*>,and2b] in the carrier of (GFA3CarryStr (x,y,z)) ) by Th111; ( [<*[<*x,y*>,xor2],z*>,xor2] in the carrier of (GFA3AdderStr (x,y,z)) & [<*x,y*>,and2b] in the carrier of (GFA3CarryStr (x,y,z)) ) by Th111, FACIRC_1:61; hence ( x in the carrier of (BitGFA3Str (x,y,z)) & y in the carrier of (BitGFA3Str (x,y,z)) & z in the carrier of (BitGFA3Str (x,y,z)) & [<*x,y*>,xor2] in the carrier of (BitGFA3Str (x,y,z)) & [<*[<*x,y*>,xor2],z*>,xor2] in the carrier of (BitGFA3Str (x,y,z)) & [<*x,y*>,and2b] in the carrier of (BitGFA3Str (x,y,z)) & [<*y,z*>,and2b] in the carrier of (BitGFA3Str (x,y,z)) & [<*z,x*>,and2b] in the carrier of (BitGFA3Str (x,y,z)) & [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3] in the carrier of (BitGFA3Str (x,y,z)) ) by A1, A2, A4, A3, FACIRC_1:20; ::_thesis: verum end; theorem Th133: :: GFACIRC1:133 for x, y, z being set holds ( [<*x,y*>,xor2] in InnerVertices (BitGFA3Str (x,y,z)) & GFA3AdderOutput (x,y,z) in InnerVertices (BitGFA3Str (x,y,z)) & [<*x,y*>,and2b] in InnerVertices (BitGFA3Str (x,y,z)) & [<*y,z*>,and2b] in InnerVertices (BitGFA3Str (x,y,z)) & [<*z,x*>,and2b] in InnerVertices (BitGFA3Str (x,y,z)) & GFA3CarryOutput (x,y,z) in InnerVertices (BitGFA3Str (x,y,z)) ) proof let x, y, z be set ; ::_thesis: ( [<*x,y*>,xor2] in InnerVertices (BitGFA3Str (x,y,z)) & GFA3AdderOutput (x,y,z) in InnerVertices (BitGFA3Str (x,y,z)) & [<*x,y*>,and2b] in InnerVertices (BitGFA3Str (x,y,z)) & [<*y,z*>,and2b] in InnerVertices (BitGFA3Str (x,y,z)) & [<*z,x*>,and2b] in InnerVertices (BitGFA3Str (x,y,z)) & GFA3CarryOutput (x,y,z) in InnerVertices (BitGFA3Str (x,y,z)) ) set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; set f0 = xor2 ; set xyf0 = [<*x,y*>,xor2]; set xyf1 = [<*x,y*>,and2b]; set yzf2 = [<*y,z*>,and2b]; set zxf3 = [<*z,x*>,and2b]; set S = BitGFA3Str (x,y,z); set A1 = GFA3AdderOutput (x,y,z); set A2 = GFA3CarryOutput (x,y,z); InnerVertices (BitGFA3Str (x,y,z)) = (({[<*x,y*>,xor2]} \/ {(GFA3AdderOutput (x,y,z))}) \/ {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]}) \/ {(GFA3CarryOutput (x,y,z))} by Th127 .= ({[<*x,y*>,xor2],(GFA3AdderOutput (x,y,z))} \/ {[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]}) \/ {(GFA3CarryOutput (x,y,z))} by ENUMSET1:1 .= {[<*x,y*>,xor2],(GFA3AdderOutput (x,y,z)),[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]} \/ {(GFA3CarryOutput (x,y,z))} by ENUMSET1:8 .= {[<*x,y*>,xor2],(GFA3AdderOutput (x,y,z)),[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b],(GFA3CarryOutput (x,y,z))} by ENUMSET1:15 ; hence ( [<*x,y*>,xor2] in InnerVertices (BitGFA3Str (x,y,z)) & GFA3AdderOutput (x,y,z) in InnerVertices (BitGFA3Str (x,y,z)) & [<*x,y*>,and2b] in InnerVertices (BitGFA3Str (x,y,z)) & [<*y,z*>,and2b] in InnerVertices (BitGFA3Str (x,y,z)) & [<*z,x*>,and2b] in InnerVertices (BitGFA3Str (x,y,z)) & GFA3CarryOutput (x,y,z) in InnerVertices (BitGFA3Str (x,y,z)) ) by ENUMSET1:def_4; ::_thesis: verum end; theorem :: GFACIRC1:134 for x, y, z being set st z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] holds ( x in InputVertices (BitGFA3Str (x,y,z)) & y in InputVertices (BitGFA3Str (x,y,z)) & z in InputVertices (BitGFA3Str (x,y,z)) ) proof set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; set f0 = xor2 ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] implies ( x in InputVertices (BitGFA3Str (x,y,z)) & y in InputVertices (BitGFA3Str (x,y,z)) & z in InputVertices (BitGFA3Str (x,y,z)) ) ) assume A1: ( z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] ) ; ::_thesis: ( x in InputVertices (BitGFA3Str (x,y,z)) & y in InputVertices (BitGFA3Str (x,y,z)) & z in InputVertices (BitGFA3Str (x,y,z)) ) set S = BitGFA3Str (x,y,z); InputVertices (BitGFA3Str (x,y,z)) = {x,y,z} by A1, Th129; hence ( x in InputVertices (BitGFA3Str (x,y,z)) & y in InputVertices (BitGFA3Str (x,y,z)) & z in InputVertices (BitGFA3Str (x,y,z)) ) by ENUMSET1:def_1; ::_thesis: verum end; definition let x, y, z be set ; func BitGFA3CarryOutput (x,y,z) -> Element of InnerVertices (BitGFA3Str (x,y,z)) equals :: GFACIRC1:def 51 [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3]; coherence [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3] is Element of InnerVertices (BitGFA3Str (x,y,z)) proof GFA3CarryOutput (x,y,z) in InnerVertices (BitGFA3Str (x,y,z)) by Th133; hence [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3] is Element of InnerVertices (BitGFA3Str (x,y,z)) ; ::_thesis: verum end; end; :: deftheorem defines BitGFA3CarryOutput GFACIRC1:def_51_:_ for x, y, z being set holds BitGFA3CarryOutput (x,y,z) = [<*[<*x,y*>,and2b],[<*y,z*>,and2b],[<*z,x*>,and2b]*>,nor3]; definition let x, y, z be set ; func BitGFA3AdderOutput (x,y,z) -> Element of InnerVertices (BitGFA3Str (x,y,z)) equals :: GFACIRC1:def 52 2GatesCircOutput (x,y,z,xor2); coherence 2GatesCircOutput (x,y,z,xor2) is Element of InnerVertices (BitGFA3Str (x,y,z)) proof GFA3AdderOutput (x,y,z) in InnerVertices (BitGFA3Str (x,y,z)) by Th133; hence 2GatesCircOutput (x,y,z,xor2) is Element of InnerVertices (BitGFA3Str (x,y,z)) ; ::_thesis: verum end; end; :: deftheorem defines BitGFA3AdderOutput GFACIRC1:def_52_:_ for x, y, z being set holds BitGFA3AdderOutput (x,y,z) = 2GatesCircOutput (x,y,z,xor2); theorem :: GFACIRC1:135 for x, y, z being set st z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] holds for s being State of (BitGFA3Circ (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA3AdderOutput (x,y,z)) = 'not' ((('not' a1) 'xor' ('not' a2)) 'xor' ('not' a3)) & (Following (s,2)) . (GFA3CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' ('not' a2)) 'or' (('not' a2) '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) ) proof set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; set f0 = xor2 ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] implies for s being State of (BitGFA3Circ (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA3AdderOutput (x,y,z)) = 'not' ((('not' a1) 'xor' ('not' a2)) 'xor' ('not' a3)) & (Following (s,2)) . (GFA3CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' ('not' a2)) 'or' (('not' a2) '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) ) ) assume that A1: z <> [<*x,y*>,xor2] and A2: ( x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] ) ; ::_thesis: for s being State of (BitGFA3Circ (x,y,z)) for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA3AdderOutput (x,y,z)) = 'not' ((('not' a1) 'xor' ('not' a2)) 'xor' ('not' a3)) & (Following (s,2)) . (GFA3CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' ('not' a2)) 'or' (('not' a2) '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) ) set S2 = GFA3CarryStr (x,y,z); set S1 = GFA3AdderStr (x,y,z); InputVertices (GFA3AdderStr (x,y,z)) = {x,y,z} by A1, FACIRC_1:57; then A3: InputVertices (GFA3AdderStr (x,y,z)) = InputVertices (GFA3CarryStr (x,y,z)) by A2, Th109; set A2 = GFA3CarryCirc (x,y,z); set A1 = GFA3AdderCirc (x,y,z); set A = BitGFA3Circ (x,y,z); let s be State of (BitGFA3Circ (x,y,z)); ::_thesis: for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . z holds ( (Following (s,2)) . (GFA3AdderOutput (x,y,z)) = 'not' ((('not' a1) 'xor' ('not' a2)) 'xor' ('not' a3)) & (Following (s,2)) . (GFA3CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' ('not' a2)) 'or' (('not' a2) '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) ) let a1, a2, a3 be Element of BOOLEAN ; ::_thesis: ( a1 = s . x & a2 = s . y & a3 = s . z implies ( (Following (s,2)) . (GFA3AdderOutput (x,y,z)) = 'not' ((('not' a1) 'xor' ('not' a2)) 'xor' ('not' a3)) & (Following (s,2)) . (GFA3CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' ('not' a2)) 'or' (('not' a2) '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) ) ) assume that A4: a1 = s . x and A5: a2 = s . y and A6: a3 = s . z ; ::_thesis: ( (Following (s,2)) . (GFA3AdderOutput (x,y,z)) = 'not' ((('not' a1) 'xor' ('not' a2)) 'xor' ('not' a3)) & (Following (s,2)) . (GFA3CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' ('not' a2)) 'or' (('not' a2) '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) ) reconsider s1 = s | the carrier of (GFA3AdderStr (x,y,z)) as State of (GFA3AdderCirc (x,y,z)) by FACIRC_1:26; A7: dom s1 = the carrier of (GFA3AdderStr (x,y,z)) by CIRCUIT1:3; z in the carrier of (GFA3AdderStr (x,y,z)) by FACIRC_1:60; then A8: a3 = s1 . z by A6, A7, FUNCT_1:47; y in the carrier of (GFA3AdderStr (x,y,z)) by FACIRC_1:60; then A9: a2 = s1 . y by A5, A7, FUNCT_1:47; reconsider t = s as State of ((GFA3AdderCirc (x,y,z)) +* (GFA3CarryCirc (x,y,z))) ; InnerVertices (GFA3CarryStr (x,y,z)) misses InputVertices (GFA3CarryStr (x,y,z)) by XBOOLE_1:79; then A10: (Following (t,2)) . (GFA3AdderOutput (x,y,z)) = (Following (s1,2)) . (GFA3AdderOutput (x,y,z)) by A3, FACIRC_1:32; reconsider s2 = s | the carrier of (GFA3CarryStr (x,y,z)) as State of (GFA3CarryCirc (x,y,z)) by FACIRC_1:26; A11: dom s2 = the carrier of (GFA3CarryStr (x,y,z)) by CIRCUIT1:3; x in the carrier of (GFA3AdderStr (x,y,z)) by FACIRC_1:60; then a1 = s1 . x by A4, A7, FUNCT_1:47; hence (Following (s,2)) . (GFA3AdderOutput (x,y,z)) = 'not' ((('not' a1) 'xor' ('not' a2)) 'xor' ('not' a3)) by A1, A9, A8, A10, Th126; ::_thesis: (Following (s,2)) . (GFA3CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' ('not' a2)) 'or' (('not' a2) '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) InnerVertices (GFA3AdderStr (x,y,z)) misses InputVertices (GFA3AdderStr (x,y,z)) by XBOOLE_1:79; then A12: (Following (t,2)) . (GFA3CarryOutput (x,y,z)) = (Following (s2,2)) . (GFA3CarryOutput (x,y,z)) by A3, FACIRC_1:33; z in the carrier of (GFA3CarryStr (x,y,z)) by Th111; then A13: a3 = s2 . z by A6, A11, FUNCT_1:47; y in the carrier of (GFA3CarryStr (x,y,z)) by Th111; then A14: a2 = s2 . y by A5, A11, FUNCT_1:47; x in the carrier of (GFA3CarryStr (x,y,z)) by Th111; then a1 = s2 . x by A4, A11, FUNCT_1:47; hence (Following (s,2)) . (GFA3CarryOutput (x,y,z)) = 'not' (((('not' a1) '&' ('not' a2)) 'or' (('not' a2) '&' ('not' a3))) 'or' (('not' a3) '&' ('not' a1))) by A2, A14, A13, A12, Th117; ::_thesis: verum end; theorem :: GFACIRC1:136 for x, y, z being set st z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] holds for s being State of (BitGFA3Circ (x,y,z)) holds Following (s,2) is stable proof set f1 = and2b ; set f2 = and2b ; set f3 = and2b ; set f0 = xor2 ; let x, y, z be set ; ::_thesis: ( z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] implies for s being State of (BitGFA3Circ (x,y,z)) holds Following (s,2) is stable ) assume that A1: z <> [<*x,y*>,xor2] and A2: ( x <> [<*y,z*>,and2b] & y <> [<*z,x*>,and2b] & z <> [<*x,y*>,and2b] ) ; ::_thesis: for s being State of (BitGFA3Circ (x,y,z)) holds Following (s,2) is stable set A = BitGFA3Circ (x,y,z); let s be State of (BitGFA3Circ (x,y,z)); ::_thesis: Following (s,2) is stable set S2 = GFA3CarryStr (x,y,z); set S1 = GFA3AdderStr (x,y,z); InputVertices (GFA3AdderStr (x,y,z)) = {x,y,z} by A1, FACIRC_1:57; then A3: InputVertices (GFA3AdderStr (x,y,z)) = InputVertices (GFA3CarryStr (x,y,z)) by A2, Th109; set A1 = GFA3AdderCirc (x,y,z); reconsider s1 = s | the carrier of (GFA3AdderStr (x,y,z)) as State of (GFA3AdderCirc (x,y,z)) by FACIRC_1:26; Following (s1,2) is stable by A1, FACIRC_1:63; then A4: Following (s1,2) = Following (Following (s1,2)) by CIRCUIT2:def_6 .= Following (s1,(2 + 1)) by FACIRC_1:12 ; set A2 = GFA3CarryCirc (x,y,z); reconsider s2 = s | the carrier of (GFA3CarryStr (x,y,z)) as State of (GFA3CarryCirc (x,y,z)) by FACIRC_1:26; Following (s2,2) is stable by A2, Th118; then A5: Following (s2,2) = Following (Following (s2,2)) by CIRCUIT2:def_6 .= Following (s2,(2 + 1)) by FACIRC_1:12 ; reconsider t = s as State of ((GFA3AdderCirc (x,y,z)) +* (GFA3CarryCirc (x,y,z))) ; set S = BitGFA3Str (x,y,z); A6: dom (Following (s,3)) = the carrier of (BitGFA3Str (x,y,z)) by CIRCUIT1:3; InnerVertices (GFA3CarryStr (x,y,z)) misses InputVertices (GFA3CarryStr (x,y,z)) by XBOOLE_1:79; then A7: ( Following (s1,2) = (Following (t,2)) | the carrier of (GFA3AdderStr (x,y,z)) & Following (s1,3) = (Following (t,3)) | the carrier of (GFA3AdderStr (x,y,z)) ) by A3, FACIRC_1:30; InnerVertices (GFA3AdderStr (x,y,z)) misses InputVertices (GFA3AdderStr (x,y,z)) by XBOOLE_1:79; then A8: ( Following (s2,2) = (Following (t,2)) | the carrier of (GFA3CarryStr (x,y,z)) & Following (s2,3) = (Following (t,3)) | the carrier of (GFA3CarryStr (x,y,z)) ) by A3, FACIRC_1:31; A9: the carrier of (BitGFA3Str (x,y,z)) = the carrier of (GFA3AdderStr (x,y,z)) \/ the carrier of (GFA3CarryStr (x,y,z)) by CIRCCOMB:def_2; A10: ( dom (Following (s1,2)) = the carrier of (GFA3AdderStr (x,y,z)) & dom (Following (s2,2)) = the carrier of (GFA3CarryStr (x,y,z)) ) by CIRCUIT1:3; A11: now__::_thesis:_for_a_being_set_st_a_in_the_carrier_of_(BitGFA3Str_(x,y,z))_holds_ (Following_(s,2))_._a_=_(Following_(Following_(s,2)))_._a let a be set ; ::_thesis: ( a in the carrier of (BitGFA3Str (x,y,z)) implies (Following (s,2)) . a = (Following (Following (s,2))) . a ) assume a in the carrier of (BitGFA3Str (x,y,z)) ; ::_thesis: (Following (s,2)) . a = (Following (Following (s,2))) . a then ( a in the carrier of (GFA3AdderStr (x,y,z)) or a in the carrier of (GFA3CarryStr (x,y,z)) ) by A9, XBOOLE_0:def_3; then ( ( (Following (s,2)) . a = (Following (s1,2)) . a & (Following (s,3)) . a = (Following (s1,3)) . a ) or ( (Following (s,2)) . a = (Following (s2,2)) . a & (Following (s,3)) . a = (Following (s2,3)) . a ) ) by A7, A8, A4, A5, A10, FUNCT_1:47; hence (Following (s,2)) . a = (Following (Following (s,2))) . a by A4, A5, FACIRC_1:12; ::_thesis: verum end; ( Following (s,(2 + 1)) = Following (Following (s,2)) & dom (Following (s,2)) = the carrier of (BitGFA3Str (x,y,z)) ) by CIRCUIT1:3, FACIRC_1:12; hence Following (s,2) = Following (Following (s,2)) by A6, A11, FUNCT_1:2; :: according to CIRCUIT2:def_6 ::_thesis: verum end;