:: FACIRC_1 semantic presentation :: Showing IDV graph ... (Click the Palm Trees again to close it)
:: deftheorem Def1 defines pair FACIRC_1:def 1 :
for
IT being
set holds
(
IT is
pair iff ex
x,
y being
set st
IT = [x,y] );
:: deftheorem Def2 defines with_pair FACIRC_1:def 2 :
:: deftheorem defines nonpair-yielding FACIRC_1:def 3 :
theorem Th1: :: FACIRC_1:1 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th2: :: FACIRC_1:2 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th3: :: FACIRC_1:3 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th4: :: FACIRC_1:4 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th5: :: FACIRC_1:5 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th6: :: FACIRC_1:6 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th7: :: FACIRC_1:7 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th8: :: FACIRC_1:8 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th9: :: FACIRC_1:9 :: Showing IDV graph ... (Click the Palm Tree again to close it)
scheme :: FACIRC_1:sch 3
2AryBooleDef{
F1(
set ,
set )
-> Element of
BOOLEAN } :
( ex
f being
Function of 2
-tuples_on BOOLEAN ,
BOOLEAN st
for
x,
y being
Element of
BOOLEAN holds
f . <*x,y*> = F1(
x,
y) & ( for
f1,
f2 being
Function of 2
-tuples_on BOOLEAN ,
BOOLEAN st ( for
x,
y being
Element of
BOOLEAN holds
f1 . <*x,y*> = F1(
x,
y) ) & ( for
x,
y being
Element of
BOOLEAN holds
f2 . <*x,y*> = F1(
x,
y) ) holds
f1 = f2 ) )
scheme :: FACIRC_1:sch 5
3AryBooleUniq{
F1(
set ,
set ,
set )
-> Element of
BOOLEAN } :
for
f1,
f2 being
Function of 3
-tuples_on BOOLEAN ,
BOOLEAN st ( for
x,
y,
z being
Element of
BOOLEAN holds
f1 . <*x,y,z*> = F1(
x,
y,
z) ) & ( for
x,
y,
z being
Element of
BOOLEAN holds
f2 . <*x,y,z*> = F1(
x,
y,
z) ) holds
f1 = f2
scheme :: FACIRC_1:sch 6
3AryBooleDef{
F1(
set ,
set ,
set )
-> Element of
BOOLEAN } :
( ex
f being
Function of 3
-tuples_on BOOLEAN ,
BOOLEAN st
for
x,
y,
z being
Element of
BOOLEAN holds
f . <*x,y,z*> = F1(
x,
y,
z) & ( for
f1,
f2 being
Function of 3
-tuples_on BOOLEAN ,
BOOLEAN st ( for
x,
y,
z being
Element of
BOOLEAN holds
f1 . <*x,y,z*> = F1(
x,
y,
z) ) & ( for
x,
y,
z being
Element of
BOOLEAN holds
f2 . <*x,y,z*> = F1(
x,
y,
z) ) holds
f1 = f2 ) )
definition
func 'xor' -> Function of 2
-tuples_on BOOLEAN ,
BOOLEAN means :
Def4:
:: FACIRC_1:def 4
for
x,
y being
Element of
BOOLEAN holds
it . <*x,y*> = x 'xor' y;
correctness
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' y;
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' y ) & ( for x, y being Element of BOOLEAN holds b2 . <*x,y*> = x 'xor' y ) holds
b1 = b2;
func 'or' -> Function of 2
-tuples_on BOOLEAN ,
BOOLEAN means :
Def5:
:: FACIRC_1:def 5
for
x,
y being
Element of
BOOLEAN holds
it . <*x,y*> = x 'or' y;
correctness
existence
ex b1 being Function of 2 -tuples_on BOOLEAN , BOOLEAN st
for x, y being Element of BOOLEAN holds b1 . <*x,y*> = x 'or' y;
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 'or' y ) & ( for x, y being Element of BOOLEAN holds b2 . <*x,y*> = x 'or' y ) holds
b1 = b2;
func '&' -> Function of 2
-tuples_on BOOLEAN ,
BOOLEAN means :
Def6:
:: FACIRC_1:def 6
for
x,
y being
Element of
BOOLEAN holds
it . <*x,y*> = x '&' y;
correctness
existence
ex b1 being Function of 2 -tuples_on BOOLEAN , BOOLEAN st
for x, y being Element of BOOLEAN holds b1 . <*x,y*> = x '&' y;
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 '&' y ) & ( for x, y being Element of BOOLEAN holds b2 . <*x,y*> = x '&' y ) holds
b1 = b2;
end;
:: deftheorem Def4 defines 'xor' FACIRC_1:def 4 :
:: deftheorem Def5 defines 'or' FACIRC_1:def 5 :
:: deftheorem Def6 defines '&' FACIRC_1:def 6 :
definition
func or3 -> Function of 3
-tuples_on BOOLEAN ,
BOOLEAN means :
Def7:
:: FACIRC_1:def 7
for
x,
y,
z being
Element of
BOOLEAN holds
it . <*x,y,z*> = (x 'or' y) 'or' z;
correctness
existence
ex b1 being Function of 3 -tuples_on BOOLEAN , BOOLEAN st
for x, y, z being Element of BOOLEAN holds b1 . <*x,y,z*> = (x 'or' y) 'or' z;
uniqueness
for b1, b2 being Function of 3 -tuples_on BOOLEAN , BOOLEAN st ( for x, y, z being Element of BOOLEAN holds b1 . <*x,y,z*> = (x 'or' y) 'or' z ) & ( for x, y, z being Element of BOOLEAN holds b2 . <*x,y,z*> = (x 'or' y) 'or' z ) holds
b1 = b2;
end;
:: deftheorem Def7 defines or3 FACIRC_1:def 7 :
theorem Th10: :: FACIRC_1:10 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem Def8 defines Following FACIRC_1:def 8 :
theorem Th11: :: FACIRC_1:11 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th12: :: FACIRC_1:12 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th13: :: FACIRC_1:13 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th14: :: FACIRC_1:14 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th15: :: FACIRC_1:15 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th16: :: FACIRC_1:16 :: Showing IDV graph ... (Click the Palm Tree again to close it)
:: deftheorem Def9 defines is_stable_at FACIRC_1:def 9 :
theorem :: FACIRC_1:17 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: FACIRC_1:18 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th19: :: FACIRC_1:19 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th20: :: FACIRC_1:20 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th21: :: FACIRC_1:21 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: FACIRC_1:22 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th23: :: FACIRC_1:23 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th24: :: FACIRC_1:24 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th25: :: FACIRC_1:25 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th26: :: FACIRC_1:26 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th27: :: FACIRC_1:27 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th28: :: FACIRC_1:28 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th29: :: FACIRC_1:29 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th30: :: FACIRC_1:30 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th31: :: FACIRC_1:31 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th32: :: FACIRC_1:32 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th33: :: FACIRC_1:33 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th34: :: FACIRC_1:34 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th35: :: FACIRC_1:35 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: FACIRC_1:36 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th37: :: FACIRC_1:37 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th38: :: FACIRC_1:38 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: FACIRC_1:39 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th40: :: FACIRC_1:40 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th41: :: FACIRC_1:41 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th42: :: FACIRC_1:42 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th43: :: FACIRC_1:43 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
x,
y,
f being
set holds
(
x in the
carrier of
(1GateCircStr <*x,y*>,f) &
y in the
carrier of
(1GateCircStr <*x,y*>,f) &
[<*x,y*>,f] in the
carrier of
(1GateCircStr <*x,y*>,f) )
theorem Th44: :: FACIRC_1:44 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
x,
y,
z,
f being
set holds
(
x in the
carrier of
(1GateCircStr <*x,y,z*>,f) &
y in the
carrier of
(1GateCircStr <*x,y,z*>,f) &
z in the
carrier of
(1GateCircStr <*x,y,z*>,f) )
theorem :: FACIRC_1:45 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: FACIRC_1:46 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th47: :: FACIRC_1:47 :: Showing IDV graph ... (Click the Palm Tree again to close it)
definition
let x,
y be
set ;
let f be
Function of 2
-tuples_on BOOLEAN ,
BOOLEAN ;
func 1GateCircuit x,
y,
f -> strict gate`2=den Boolean Circuit of
1GateCircStr <*x,y*>,
f equals :: FACIRC_1:def 10
1GateCircuit <*x,y*>,
f;
coherence
1GateCircuit <*x,y*>,f is strict gate`2=den Boolean Circuit of 1GateCircStr <*x,y*>,f
by CIRCCOMB:69;
end;
:: deftheorem defines 1GateCircuit FACIRC_1:def 10 :
theorem Th48: :: FACIRC_1:48 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th49: :: FACIRC_1:49 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th50: :: FACIRC_1:50 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: FACIRC_1:51 :: Showing IDV graph ... (Click the Palm Tree again to close it)
definition
let x,
y,
z be
set ;
let f be
Function of 3
-tuples_on BOOLEAN ,
BOOLEAN ;
func 1GateCircuit x,
y,
z,
f -> strict gate`2=den Boolean Circuit of
1GateCircStr <*x,y,z*>,
f equals :: FACIRC_1:def 11
1GateCircuit <*x,y,z*>,
f;
coherence
1GateCircuit <*x,y,z*>,f is strict gate`2=den Boolean Circuit of 1GateCircStr <*x,y,z*>,f
by CIRCCOMB:69;
end;
:: deftheorem defines 1GateCircuit FACIRC_1:def 11 :
theorem Th52: :: FACIRC_1:52 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
x,
y,
z being
set for
X being non
empty finite set for
f being
Function of 3
-tuples_on X,
X for
s being
State of
(1GateCircuit <*x,y,z*>,f) holds
(
(Following s) . [<*x,y,z*>,f] = f . <*(s . x),(s . y),(s . z)*> &
(Following s) . x = s . x &
(Following s) . y = s . y &
(Following s) . z = s . z )
theorem Th53: :: FACIRC_1:53 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: FACIRC_1:54 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
x,
y,
z being
set for
f being
Function of 3
-tuples_on BOOLEAN ,
BOOLEAN for
s being
State of
(1GateCircuit x,y,z,f) holds
(
(Following s) . [<*x,y,z*>,f] = f . <*(s . x),(s . y),(s . z)*> &
(Following s) . x = s . x &
(Following s) . y = s . y &
(Following s) . z = s . z )
by Th52;
theorem :: FACIRC_1:55 :: Showing IDV graph ... (Click the Palm Tree again to close it)
definition
let x,
y,
c be
set ;
let f be
Function of 2
-tuples_on BOOLEAN ,
BOOLEAN ;
func 2GatesCircStr x,
y,
c,
f -> non
empty strict non
void unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: FACIRC_1:def 12
(1GateCircStr <*x,y*>,f) +* (1GateCircStr <*[<*x,y*>,f],c*>,f);
correctness
coherence
(1GateCircStr <*x,y*>,f) +* (1GateCircStr <*[<*x,y*>,f],c*>,f) is non empty strict non void unsplit gate`1=arity gate`2isBoolean ManySortedSign ;
;
end;
:: deftheorem defines 2GatesCircStr FACIRC_1:def 12 :
for
x,
y,
c being
set for
f being
Function of 2
-tuples_on BOOLEAN ,
BOOLEAN holds
2GatesCircStr x,
y,
c,
f = (1GateCircStr <*x,y*>,f) +* (1GateCircStr <*[<*x,y*>,f],c*>,f);
definition
let x,
y,
c be
set ;
let f be
Function of 2
-tuples_on BOOLEAN ,
BOOLEAN ;
func 2GatesCircOutput x,
y,
c,
f -> Element of
InnerVertices (2GatesCircStr x,y,c,f) equals :: FACIRC_1:def 13
[<*[<*x,y*>,f],c*>,f];
coherence
[<*[<*x,y*>,f],c*>,f] is Element of InnerVertices (2GatesCircStr x,y,c,f)
correctness
;
end;
:: deftheorem defines 2GatesCircOutput FACIRC_1:def 13 :
for
x,
y,
c being
set for
f being
Function of 2
-tuples_on BOOLEAN ,
BOOLEAN holds
2GatesCircOutput x,
y,
c,
f = [<*[<*x,y*>,f],c*>,f];
theorem Th56: :: FACIRC_1:56 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
x,
y,
c being
set for
f being
Function of 2
-tuples_on BOOLEAN ,
BOOLEAN holds
InnerVertices (2GatesCircStr x,y,c,f) = {[<*x,y*>,f],(2GatesCircOutput x,y,c,f)}
theorem Th57: :: FACIRC_1:57 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
c,
x,
y being
set for
f being
Function of 2
-tuples_on BOOLEAN ,
BOOLEAN st
c <> [<*x,y*>,f] holds
InputVertices (2GatesCircStr x,y,c,f) = {x,y,c}
definition
let x,
y,
c be
set ;
let f be
Function of 2
-tuples_on BOOLEAN ,
BOOLEAN ;
func 2GatesCircuit x,
y,
c,
f -> strict gate`2=den Boolean Circuit of
2GatesCircStr x,
y,
c,
f equals :: FACIRC_1:def 14
(1GateCircuit x,y,f) +* (1GateCircuit [<*x,y*>,f],c,f);
coherence
(1GateCircuit x,y,f) +* (1GateCircuit [<*x,y*>,f],c,f) is strict gate`2=den Boolean Circuit of 2GatesCircStr x,y,c,f
;
end;
:: deftheorem defines 2GatesCircuit FACIRC_1:def 14 :
for
x,
y,
c being
set for
f being
Function of 2
-tuples_on BOOLEAN ,
BOOLEAN holds
2GatesCircuit x,
y,
c,
f = (1GateCircuit x,y,f) +* (1GateCircuit [<*x,y*>,f],c,f);
theorem Th58: :: FACIRC_1:58 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th59: :: FACIRC_1:59 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th60: :: FACIRC_1:60 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
x,
y,
c being
set for
f being
Function of 2
-tuples_on BOOLEAN ,
BOOLEAN holds
(
x in the
carrier of
(2GatesCircStr x,y,c,f) &
y in the
carrier of
(2GatesCircStr x,y,c,f) &
c in the
carrier of
(2GatesCircStr x,y,c,f) )
theorem :: FACIRC_1:61 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
x,
y,
c being
set for
f being
Function of 2
-tuples_on BOOLEAN ,
BOOLEAN holds
(
[<*x,y*>,f] in the
carrier of
(2GatesCircStr x,y,c,f) &
[<*[<*x,y*>,f],c*>,f] in the
carrier of
(2GatesCircStr x,y,c,f) )
Lm2:
for c, x, y being set
for f being Function of 2 -tuples_on BOOLEAN , BOOLEAN
for s being State of (2GatesCircuit x,y,c,f) st c <> [<*x,y*>,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 )
theorem Th62: :: FACIRC_1:62 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
c,
x,
y being
set for
f being
Function of 2
-tuples_on BOOLEAN ,
BOOLEAN for
s being
State of
(2GatesCircuit x,y,c,f) st
c <> [<*x,y*>,f] holds
(
(Following s,2) . (2GatesCircOutput x,y,c,f) = f . <*(f . <*(s . x),(s . y)*>),(s . c)*> &
(Following s,2) . [<*x,y*>,f] = f . <*(s . x),(s . y)*> &
(Following s,2) . x = s . x &
(Following s,2) . y = s . y &
(Following s,2) . c = s . c )
theorem Th63: :: FACIRC_1:63 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th64: :: FACIRC_1:64 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
c,
x,
y being
set st
c <> [<*x,y*>,'xor' ] holds
for
s being
State of
(2GatesCircuit x,y,c,'xor' ) for
a1,
a2,
a3 being
Element of
BOOLEAN st
a1 = s . x &
a2 = s . y &
a3 = s . c holds
(Following s,2) . (2GatesCircOutput x,y,c,'xor' ) = (a1 'xor' a2) 'xor' a3
theorem :: FACIRC_1:65 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
c,
x,
y being
set st
c <> [<*x,y*>,'or' ] holds
for
s being
State of
(2GatesCircuit x,y,c,'or' ) for
a1,
a2,
a3 being
Element of
BOOLEAN st
a1 = s . x &
a2 = s . y &
a3 = s . c holds
(Following s,2) . (2GatesCircOutput x,y,c,'or' ) = (a1 'or' a2) 'or' a3
theorem :: FACIRC_1:66 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
c,
x,
y being
set st
c <> [<*x,y*>,'&' ] holds
for
s being
State of
(2GatesCircuit x,y,c,'&' ) for
a1,
a2,
a3 being
Element of
BOOLEAN st
a1 = s . x &
a2 = s . y &
a3 = s . c holds
(Following s,2) . (2GatesCircOutput x,y,c,'&' ) = (a1 '&' a2) '&' a3
definition
let x,
y,
c be
set ;
func BitAdderOutput x,
y,
c -> Element of
InnerVertices (2GatesCircStr x,y,c,'xor' ) equals :: FACIRC_1:def 15
2GatesCircOutput x,
y,
c,
'xor' ;
coherence
2GatesCircOutput x,y,c,'xor' is Element of InnerVertices (2GatesCircStr x,y,c,'xor' )
;
end;
:: deftheorem defines BitAdderOutput FACIRC_1:def 15 :
definition
let x,
y,
c be
set ;
func BitAdderCirc x,
y,
c -> strict gate`2=den Boolean Circuit of
2GatesCircStr x,
y,
c,
'xor' equals :: FACIRC_1:def 16
2GatesCircuit x,
y,
c,
'xor' ;
coherence
2GatesCircuit x,y,c,'xor' is strict gate`2=den Boolean Circuit of 2GatesCircStr x,y,c,'xor'
;
end;
:: deftheorem defines BitAdderCirc FACIRC_1:def 16 :
definition
let x,
y,
c be
set ;
func MajorityIStr x,
y,
c -> non
empty strict non
void unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: FACIRC_1:def 17
((1GateCircStr <*x,y*>,'&' ) +* (1GateCircStr <*y,c*>,'&' )) +* (1GateCircStr <*c,x*>,'&' );
correctness
coherence
((1GateCircStr <*x,y*>,'&' ) +* (1GateCircStr <*y,c*>,'&' )) +* (1GateCircStr <*c,x*>,'&' ) is non empty strict non void unsplit gate`1=arity gate`2isBoolean ManySortedSign ;
;
end;
:: deftheorem defines MajorityIStr FACIRC_1:def 17 :
for
x,
y,
c being
set holds
MajorityIStr x,
y,
c = ((1GateCircStr <*x,y*>,'&' ) +* (1GateCircStr <*y,c*>,'&' )) +* (1GateCircStr <*c,x*>,'&' );
definition
let x,
y,
c be
set ;
func MajorityStr x,
y,
c -> non
empty strict non
void unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: FACIRC_1:def 18
(MajorityIStr x,y,c) +* (1GateCircStr <*[<*x,y*>,'&' ],[<*y,c*>,'&' ],[<*c,x*>,'&' ]*>,or3 );
correctness
coherence
(MajorityIStr x,y,c) +* (1GateCircStr <*[<*x,y*>,'&' ],[<*y,c*>,'&' ],[<*c,x*>,'&' ]*>,or3 ) is non empty strict non void unsplit gate`1=arity gate`2isBoolean ManySortedSign ;
;
end;
:: deftheorem defines MajorityStr FACIRC_1:def 18 :
for
x,
y,
c being
set holds
MajorityStr x,
y,
c = (MajorityIStr x,y,c) +* (1GateCircStr <*[<*x,y*>,'&' ],[<*y,c*>,'&' ],[<*c,x*>,'&' ]*>,or3 );
definition
let x,
y,
c be
set ;
func MajorityICirc x,
y,
c -> strict gate`2=den Boolean Circuit of
MajorityIStr x,
y,
c equals :: FACIRC_1:def 19
((1GateCircuit x,y,'&' ) +* (1GateCircuit y,c,'&' )) +* (1GateCircuit c,x,'&' );
coherence
((1GateCircuit x,y,'&' ) +* (1GateCircuit y,c,'&' )) +* (1GateCircuit c,x,'&' ) is strict gate`2=den Boolean Circuit of MajorityIStr x,y,c
;
end;
:: deftheorem defines MajorityICirc FACIRC_1:def 19 :
for
x,
y,
c being
set holds
MajorityICirc x,
y,
c = ((1GateCircuit x,y,'&' ) +* (1GateCircuit y,c,'&' )) +* (1GateCircuit c,x,'&' );
theorem Th67: :: FACIRC_1:67 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th68: :: FACIRC_1:68 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: FACIRC_1:69 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: FACIRC_1:70 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: FACIRC_1:71 :: Showing IDV graph ... (Click the Palm Tree again to close it)
definition
let x,
y,
c be
set ;
func MajorityOutput x,
y,
c -> Element of
InnerVertices (MajorityStr x,y,c) equals :: FACIRC_1:def 20
[<*[<*x,y*>,'&' ],[<*y,c*>,'&' ],[<*c,x*>,'&' ]*>,or3 ];
coherence
[<*[<*x,y*>,'&' ],[<*y,c*>,'&' ],[<*c,x*>,'&' ]*>,or3 ] is Element of InnerVertices (MajorityStr x,y,c)
correctness
;
end;
:: deftheorem defines MajorityOutput FACIRC_1:def 20 :
for
x,
y,
c being
set holds
MajorityOutput x,
y,
c = [<*[<*x,y*>,'&' ],[<*y,c*>,'&' ],[<*c,x*>,'&' ]*>,or3 ];
definition
let x,
y,
c be
set ;
func MajorityCirc x,
y,
c -> strict gate`2=den Boolean Circuit of
MajorityStr x,
y,
c equals :: FACIRC_1:def 21
(MajorityICirc x,y,c) +* (1GateCircuit [<*x,y*>,'&' ],[<*y,c*>,'&' ],[<*c,x*>,'&' ],or3 );
coherence
(MajorityICirc x,y,c) +* (1GateCircuit [<*x,y*>,'&' ],[<*y,c*>,'&' ],[<*c,x*>,'&' ],or3 ) is strict gate`2=den Boolean Circuit of MajorityStr x,y,c
;
end;
:: deftheorem defines MajorityCirc FACIRC_1:def 21 :
for
x,
y,
c being
set holds
MajorityCirc x,
y,
c = (MajorityICirc x,y,c) +* (1GateCircuit [<*x,y*>,'&' ],[<*y,c*>,'&' ],[<*c,x*>,'&' ],or3 );
theorem Th72: :: FACIRC_1:72 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th73: :: FACIRC_1:73 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
x,
y,
c being
set holds
(
[<*x,y*>,'&' ] in InnerVertices (MajorityStr x,y,c) &
[<*y,c*>,'&' ] in InnerVertices (MajorityStr x,y,c) &
[<*c,x*>,'&' ] in InnerVertices (MajorityStr x,y,c) )
theorem Th74: :: FACIRC_1:74 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th75: :: FACIRC_1:75 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
x,
y,
c being non
pair set holds
(
InputVertices (MajorityStr x,y,c) = {x,y,c} &
InnerVertices (MajorityStr x,y,c) = {[<*x,y*>,'&' ],[<*y,c*>,'&' ],[<*c,x*>,'&' ]} \/ {(MajorityOutput x,y,c)} )
Lm3:
for x, y, c being non pair set
for s being State of (MajorityCirc x,y,c)
for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . c holds
( (Following s) . [<*x,y*>,'&' ] = a1 '&' a2 & (Following s) . [<*y,c*>,'&' ] = a2 '&' a3 & (Following s) . [<*c,x*>,'&' ] = a3 '&' a1 )
theorem :: FACIRC_1:76 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: FACIRC_1:77 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: FACIRC_1:78 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th79: :: FACIRC_1:79 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
x,
y,
c being non
pair set for
s being
State of
(MajorityCirc x,y,c) for
a1,
a2,
a3 being
Element of
BOOLEAN st
a1 = s . [<*x,y*>,'&' ] &
a2 = s . [<*y,c*>,'&' ] &
a3 = s . [<*c,x*>,'&' ] holds
(Following s) . (MajorityOutput x,y,c) = (a1 'or' a2) 'or' a3
Lm4:
for x, y, c being non pair set
for s being State of (MajorityCirc x,y,c)
for a1, a2, a3 being Element of BOOLEAN st a1 = s . x & a2 = s . y & a3 = s . c holds
( (Following s,2) . (MajorityOutput x,y,c) = ((a1 '&' a2) 'or' (a2 '&' a3)) 'or' (a3 '&' a1) & (Following s,2) . [<*x,y*>,'&' ] = a1 '&' a2 & (Following s,2) . [<*y,c*>,'&' ] = a2 '&' a3 & (Following s,2) . [<*c,x*>,'&' ] = a3 '&' a1 )
theorem :: FACIRC_1:80 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: FACIRC_1:81 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: FACIRC_1:82 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: FACIRC_1:83 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem Th84: :: FACIRC_1:84 :: Showing IDV graph ... (Click the Palm Tree again to close it)
definition
let x,
y,
c be
set ;
func BitAdderWithOverflowStr x,
y,
c -> non
empty strict non
void unsplit gate`1=arity gate`2isBoolean ManySortedSign equals :: FACIRC_1:def 22
(2GatesCircStr x,y,c,'xor' ) +* (MajorityStr x,y,c);
coherence
(2GatesCircStr x,y,c,'xor' ) +* (MajorityStr x,y,c) is non empty strict non void unsplit gate`1=arity gate`2isBoolean ManySortedSign
;
end;
:: deftheorem defines BitAdderWithOverflowStr FACIRC_1:def 22 :
theorem Th85: :: FACIRC_1:85 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: FACIRC_1:86 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
x,
y,
c being non
pair set holds
InnerVertices (BitAdderWithOverflowStr x,y,c) = ({[<*x,y*>,'xor' ],(2GatesCircOutput x,y,c,'xor' )} \/ {[<*x,y*>,'&' ],[<*y,c*>,'&' ],[<*c,x*>,'&' ]}) \/ {(MajorityOutput x,y,c)}
theorem :: FACIRC_1:87 :: Showing IDV graph ... (Click the Palm Tree again to close it)
definition
let x,
y,
c be
set ;
func BitAdderWithOverflowCirc x,
y,
c -> strict gate`2=den Boolean Circuit of
BitAdderWithOverflowStr x,
y,
c equals :: FACIRC_1:def 23
(BitAdderCirc x,y,c) +* (MajorityCirc x,y,c);
coherence
(BitAdderCirc x,y,c) +* (MajorityCirc x,y,c) is strict gate`2=den Boolean Circuit of BitAdderWithOverflowStr x,y,c
;
end;
:: deftheorem defines BitAdderWithOverflowCirc FACIRC_1:def 23 :
theorem :: FACIRC_1:88 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: FACIRC_1:89 :: Showing IDV graph ... (Click the Palm Tree again to close it)
theorem :: FACIRC_1:90 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
x,
y,
c being
set holds
(
BitAdderOutput x,
y,
c in InnerVertices (BitAdderWithOverflowStr x,y,c) &
MajorityOutput x,
y,
c in InnerVertices (BitAdderWithOverflowStr x,y,c) )
by Th21;
theorem :: FACIRC_1:91 :: Showing IDV graph ... (Click the Palm Tree again to close it)
for
x,
y,
c being non
pair set for
s being
State of
(BitAdderWithOverflowCirc x,y,c) for
a1,
a2,
a3 being
Element of
BOOLEAN st
a1 = s . x &
a2 = s . y &
a3 = s . c holds
(
(Following s,2) . (BitAdderOutput x,y,c) = (a1 'xor' a2) 'xor' a3 &
(Following s,2) . (MajorityOutput x,y,c) = ((a1 '&' a2) 'or' (a2 '&' a3)) 'or' (a3 '&' a1) )
theorem :: FACIRC_1:92 :: Showing IDV graph ... (Click the Palm Tree again to close it)