:: FSCIRC_2 semantic presentation
definition
let c
1 be
Nat;
let c
2, c
3 be
FinSequence;
E1:
(
1GateCircStr <*> ,
((0 -tuples_on BOOLEAN ) --> TRUE ) is
unsplit &
1GateCircStr <*> ,
((0 -tuples_on BOOLEAN ) --> TRUE ) is
gate`1=arity &
1GateCircStr <*> ,
((0 -tuples_on BOOLEAN ) --> TRUE ) is
gate`2isBoolean & not
1GateCircStr <*> ,
((0 -tuples_on BOOLEAN ) --> TRUE ) is
void & not
1GateCircStr <*> ,
((0 -tuples_on BOOLEAN ) --> TRUE ) is
empty &
1GateCircStr <*> ,
((0 -tuples_on BOOLEAN ) --> TRUE ) is
strict )
;
func c
1 -BitSubtracterStr c
2,c
3 -> non
empty strict non
void unsplit gate`1=arity gate`2isBoolean ManySortedSign means :
Def1:
:: FSCIRC_2:def 1
ex b
1, b
2 being
ManySortedSet of
NAT st
( a
4 = b
1 . a
1 & b
1 . 0
= 1GateCircStr <*> ,
((0 -tuples_on BOOLEAN ) --> TRUE ) & b
2 . 0
= [<*> ,((0 -tuples_on BOOLEAN ) --> TRUE )] & ( for b
3 being
Natfor b
4 being non
empty ManySortedSign for b
5 being
set holds
( b
4 = b
1 . b
3 & b
5 = b
2 . b
3 implies ( b
1 . (b3 + 1) = b
4 +* (BitSubtracterWithBorrowStr (a2 . (b3 + 1)),(a3 . (b3 + 1)),b5) & b
2 . (b3 + 1) = BorrowOutput (a2 . (b3 + 1)),
(a3 . (b3 + 1)),b
5 ) ) ) );
uniqueness
for b1, b2 being non empty strict non void unsplit gate`1=arity gate`2isBoolean ManySortedSign holds
( ex b3, b4 being ManySortedSet of NAT st
( b1 = b3 . c1 & b3 . 0 = 1GateCircStr <*> ,((0 -tuples_on BOOLEAN ) --> TRUE ) & b4 . 0 = [<*> ,((0 -tuples_on BOOLEAN ) --> TRUE )] & ( for b5 being Nat
for b6 being non empty ManySortedSign
for b7 being set holds
( b6 = b3 . b5 & b7 = b4 . b5 implies ( b3 . (b5 + 1) = b6 +* (BitSubtracterWithBorrowStr (c2 . (b5 + 1)),(c3 . (b5 + 1)),b7) & b4 . (b5 + 1) = BorrowOutput (c2 . (b5 + 1)),(c3 . (b5 + 1)),b7 ) ) ) ) & ex b3, b4 being ManySortedSet of NAT st
( b2 = b3 . c1 & b3 . 0 = 1GateCircStr <*> ,((0 -tuples_on BOOLEAN ) --> TRUE ) & b4 . 0 = [<*> ,((0 -tuples_on BOOLEAN ) --> TRUE )] & ( for b5 being Nat
for b6 being non empty ManySortedSign
for b7 being set holds
( b6 = b3 . b5 & b7 = b4 . b5 implies ( b3 . (b5 + 1) = b6 +* (BitSubtracterWithBorrowStr (c2 . (b5 + 1)),(c3 . (b5 + 1)),b7) & b4 . (b5 + 1) = BorrowOutput (c2 . (b5 + 1)),(c3 . (b5 + 1)),b7 ) ) ) ) implies b1 = b2 )
existence
ex b1 being non empty strict non void unsplit gate`1=arity gate`2isBoolean ManySortedSign ex b2, b3 being ManySortedSet of NAT st
( b1 = b2 . c1 & b2 . 0 = 1GateCircStr <*> ,((0 -tuples_on BOOLEAN ) --> TRUE ) & b3 . 0 = [<*> ,((0 -tuples_on BOOLEAN ) --> TRUE )] & ( for b4 being Nat
for b5 being non empty ManySortedSign
for b6 being set holds
( b5 = b2 . b4 & b6 = b3 . b4 implies ( b2 . (b4 + 1) = b5 +* (BitSubtracterWithBorrowStr (c2 . (b4 + 1)),(c3 . (b4 + 1)),b6) & b3 . (b4 + 1) = BorrowOutput (c2 . (b4 + 1)),(c3 . (b4 + 1)),b6 ) ) ) )
end;
:: deftheorem Def1 defines -BitSubtracterStr FSCIRC_2:def 1 :
definition
let c
1 be
Nat;
let c
2, c
3 be
FinSequence;
func c
1 -BitSubtracterCirc c
2,c
3 -> strict gate`2=den Boolean Circuit of a
1 -BitSubtracterStr a
2,a
3 means :
Def2:
:: FSCIRC_2:def 2
ex b
1, b
2, b
3 being
ManySortedSet of
NAT st
( a
1 -BitSubtracterStr a
2,a
3 = b
1 . a
1 & a
4 = b
2 . a
1 & b
1 . 0
= 1GateCircStr <*> ,
((0 -tuples_on BOOLEAN ) --> TRUE ) & b
2 . 0
= 1GateCircuit <*> ,
((0 -tuples_on BOOLEAN ) --> TRUE ) & b
3 . 0
= [<*> ,((0 -tuples_on BOOLEAN ) --> TRUE )] & ( for b
4 being
Natfor b
5 being non
empty ManySortedSign for b
6 being
non-empty MSAlgebra of b
5for b
7 being
set holds
( b
5 = b
1 . b
4 & b
6 = b
2 . b
4 & b
7 = b
3 . b
4 implies ( b
1 . (b4 + 1) = b
5 +* (BitSubtracterWithBorrowStr (a2 . (b4 + 1)),(a3 . (b4 + 1)),b7) & b
2 . (b4 + 1) = b
6 +* (BitSubtracterWithBorrowCirc (a2 . (b4 + 1)),(a3 . (b4 + 1)),b7) & b
3 . (b4 + 1) = BorrowOutput (a2 . (b4 + 1)),
(a3 . (b4 + 1)),b
7 ) ) ) );
uniqueness
for b1, b2 being strict gate`2=den Boolean Circuit of c1 -BitSubtracterStr c2,c3 holds
( ex b3, b4, b5 being ManySortedSet of NAT st
( c1 -BitSubtracterStr c2,c3 = b3 . c1 & b1 = b4 . c1 & b3 . 0 = 1GateCircStr <*> ,((0 -tuples_on BOOLEAN ) --> TRUE ) & b4 . 0 = 1GateCircuit <*> ,((0 -tuples_on BOOLEAN ) --> TRUE ) & b5 . 0 = [<*> ,((0 -tuples_on BOOLEAN ) --> TRUE )] & ( for b6 being Nat
for b7 being non empty ManySortedSign
for b8 being non-empty MSAlgebra of b7
for b9 being set holds
( b7 = b3 . b6 & b8 = b4 . b6 & b9 = b5 . b6 implies ( b3 . (b6 + 1) = b7 +* (BitSubtracterWithBorrowStr (c2 . (b6 + 1)),(c3 . (b6 + 1)),b9) & b4 . (b6 + 1) = b8 +* (BitSubtracterWithBorrowCirc (c2 . (b6 + 1)),(c3 . (b6 + 1)),b9) & b5 . (b6 + 1) = BorrowOutput (c2 . (b6 + 1)),(c3 . (b6 + 1)),b9 ) ) ) ) & ex b3, b4, b5 being ManySortedSet of NAT st
( c1 -BitSubtracterStr c2,c3 = b3 . c1 & b2 = b4 . c1 & b3 . 0 = 1GateCircStr <*> ,((0 -tuples_on BOOLEAN ) --> TRUE ) & b4 . 0 = 1GateCircuit <*> ,((0 -tuples_on BOOLEAN ) --> TRUE ) & b5 . 0 = [<*> ,((0 -tuples_on BOOLEAN ) --> TRUE )] & ( for b6 being Nat
for b7 being non empty ManySortedSign
for b8 being non-empty MSAlgebra of b7
for b9 being set holds
( b7 = b3 . b6 & b8 = b4 . b6 & b9 = b5 . b6 implies ( b3 . (b6 + 1) = b7 +* (BitSubtracterWithBorrowStr (c2 . (b6 + 1)),(c3 . (b6 + 1)),b9) & b4 . (b6 + 1) = b8 +* (BitSubtracterWithBorrowCirc (c2 . (b6 + 1)),(c3 . (b6 + 1)),b9) & b5 . (b6 + 1) = BorrowOutput (c2 . (b6 + 1)),(c3 . (b6 + 1)),b9 ) ) ) ) implies b1 = b2 )
existence
ex b1 being strict gate`2=den Boolean Circuit of c1 -BitSubtracterStr c2,c3ex b2, b3, b4 being ManySortedSet of NAT st
( c1 -BitSubtracterStr c2,c3 = b2 . c1 & b1 = b3 . c1 & b2 . 0 = 1GateCircStr <*> ,((0 -tuples_on BOOLEAN ) --> TRUE ) & b3 . 0 = 1GateCircuit <*> ,((0 -tuples_on BOOLEAN ) --> TRUE ) & b4 . 0 = [<*> ,((0 -tuples_on BOOLEAN ) --> TRUE )] & ( for b5 being Nat
for b6 being non empty ManySortedSign
for b7 being non-empty MSAlgebra of b6
for b8 being set holds
( b6 = b2 . b5 & b7 = b3 . b5 & b8 = b4 . b5 implies ( b2 . (b5 + 1) = b6 +* (BitSubtracterWithBorrowStr (c2 . (b5 + 1)),(c3 . (b5 + 1)),b8) & b3 . (b5 + 1) = b7 +* (BitSubtracterWithBorrowCirc (c2 . (b5 + 1)),(c3 . (b5 + 1)),b8) & b4 . (b5 + 1) = BorrowOutput (c2 . (b5 + 1)),(c3 . (b5 + 1)),b8 ) ) ) )
end;
:: deftheorem Def2 defines -BitSubtracterCirc FSCIRC_2:def 2 :
for b
1 being
Natfor b
2, b
3 being
FinSequencefor b
4 being
strict gate`2=den Boolean Circuit of b
1 -BitSubtracterStr b
2,b
3 holds
( b
4 = b
1 -BitSubtracterCirc b
2,b
3 iff ex b
5, b
6, b
7 being
ManySortedSet of
NAT st
( b
1 -BitSubtracterStr b
2,b
3 = b
5 . b
1 & b
4 = b
6 . b
1 & b
5 . 0
= 1GateCircStr <*> ,
((0 -tuples_on BOOLEAN ) --> TRUE ) & b
6 . 0
= 1GateCircuit <*> ,
((0 -tuples_on BOOLEAN ) --> TRUE ) & b
7 . 0
= [<*> ,((0 -tuples_on BOOLEAN ) --> TRUE )] & ( for b
8 being
Natfor b
9 being non
empty ManySortedSign for b
10 being
non-empty MSAlgebra of b
9for b
11 being
set holds
( b
9 = b
5 . b
8 & b
10 = b
6 . b
8 & b
11 = b
7 . b
8 implies ( b
5 . (b8 + 1) = b
9 +* (BitSubtracterWithBorrowStr (b2 . (b8 + 1)),(b3 . (b8 + 1)),b11) & b
6 . (b8 + 1) = b
10 +* (BitSubtracterWithBorrowCirc (b2 . (b8 + 1)),(b3 . (b8 + 1)),b11) & b
7 . (b8 + 1) = BorrowOutput (b2 . (b8 + 1)),
(b3 . (b8 + 1)),b
11 ) ) ) ) );
definition
let c
1 be
Nat;
let c
2, c
3 be
FinSequence;
set c
4 =
[<*> ,((0 -tuples_on BOOLEAN ) --> TRUE )];
func c
1 -BitBorrowOutput c
2,c
3 -> Element of
InnerVertices (a1 -BitSubtracterStr a2,a3) means :
Def3:
:: FSCIRC_2:def 3
ex b
1 being
ManySortedSet of
NAT st
( a
4 = b
1 . a
1 & b
1 . 0
= [<*> ,((0 -tuples_on BOOLEAN ) --> TRUE )] & ( for b
2 being
Nat holds b
1 . (b2 + 1) = BorrowOutput (a2 . (b2 + 1)),
(a3 . (b2 + 1)),
(b1 . b2) ) );
uniqueness
for b1, b2 being Element of InnerVertices (c1 -BitSubtracterStr c2,c3) holds
( ex b3 being ManySortedSet of NAT st
( b1 = b3 . c1 & b3 . 0 = [<*> ,((0 -tuples_on BOOLEAN ) --> TRUE )] & ( for b4 being Nat holds b3 . (b4 + 1) = BorrowOutput (c2 . (b4 + 1)),(c3 . (b4 + 1)),(b3 . b4) ) ) & ex b3 being ManySortedSet of NAT st
( b2 = b3 . c1 & b3 . 0 = [<*> ,((0 -tuples_on BOOLEAN ) --> TRUE )] & ( for b4 being Nat holds b3 . (b4 + 1) = BorrowOutput (c2 . (b4 + 1)),(c3 . (b4 + 1)),(b3 . b4) ) ) implies b1 = b2 )
existence
ex b1 being Element of InnerVertices (c1 -BitSubtracterStr c2,c3)ex b2 being ManySortedSet of NAT st
( b1 = b2 . c1 & b2 . 0 = [<*> ,((0 -tuples_on BOOLEAN ) --> TRUE )] & ( for b3 being Nat holds b2 . (b3 + 1) = BorrowOutput (c2 . (b3 + 1)),(c3 . (b3 + 1)),(b2 . b3) ) )
end;
:: deftheorem Def3 defines -BitBorrowOutput FSCIRC_2:def 3 :
theorem Th1: :: FSCIRC_2:1
for b
1, b
2 being
FinSequencefor b
3, b
4, b
5 being
ManySortedSet of
NAT holds
( b
3 . 0
= 1GateCircStr <*> ,
((0 -tuples_on BOOLEAN ) --> TRUE ) & b
4 . 0
= 1GateCircuit <*> ,
((0 -tuples_on BOOLEAN ) --> TRUE ) & b
5 . 0
= [<*> ,((0 -tuples_on BOOLEAN ) --> TRUE )] & ( for b
6 being
Natfor b
7 being non
empty ManySortedSign for b
8 being
non-empty MSAlgebra of b
7for b
9 being
set holds
( b
7 = b
3 . b
6 & b
8 = b
4 . b
6 & b
9 = b
5 . b
6 implies ( b
3 . (b6 + 1) = b
7 +* (BitSubtracterWithBorrowStr (b1 . (b6 + 1)),(b2 . (b6 + 1)),b9) & b
4 . (b6 + 1) = b
8 +* (BitSubtracterWithBorrowCirc (b1 . (b6 + 1)),(b2 . (b6 + 1)),b9) & b
5 . (b6 + 1) = BorrowOutput (b1 . (b6 + 1)),
(b2 . (b6 + 1)),b
9 ) ) ) implies for b
6 being
Nat holds
( b
6 -BitSubtracterStr b
1,b
2 = b
3 . b
6 & b
6 -BitSubtracterCirc b
1,b
2 = b
4 . b
6 & b
6 -BitBorrowOutput b
1,b
2 = b
5 . b
6 ) )
theorem Th2: :: FSCIRC_2:2
theorem Th3: :: FSCIRC_2:3
for b
1, b
2 being
FinSequencefor b
3 being
set holds
( b
3 = [<*> ,((0 -tuples_on BOOLEAN ) --> TRUE )] implies ( 1
-BitSubtracterStr b
1,b
2 = (1GateCircStr <*> ,((0 -tuples_on BOOLEAN ) --> TRUE )) +* (BitSubtracterWithBorrowStr (b1 . 1),(b2 . 1),b3) & 1
-BitSubtracterCirc b
1,b
2 = (1GateCircuit <*> ,((0 -tuples_on BOOLEAN ) --> TRUE )) +* (BitSubtracterWithBorrowCirc (b1 . 1),(b2 . 1),b3) & 1
-BitBorrowOutput b
1,b
2 = BorrowOutput (b1 . 1),
(b2 . 1),b
3 ) )
theorem Th4: :: FSCIRC_2:4
for b
1, b
2, b
3 being
set holds
( b
3 = [<*> ,((0 -tuples_on BOOLEAN ) --> TRUE )] implies ( 1
-BitSubtracterStr <*b1*>,
<*b2*> = (1GateCircStr <*> ,((0 -tuples_on BOOLEAN ) --> TRUE )) +* (BitSubtracterWithBorrowStr b1,b2,b3) & 1
-BitSubtracterCirc <*b1*>,
<*b2*> = (1GateCircuit <*> ,((0 -tuples_on BOOLEAN ) --> TRUE )) +* (BitSubtracterWithBorrowCirc b1,b2,b3) & 1
-BitBorrowOutput <*b1*>,
<*b2*> = BorrowOutput b
1,b
2,b
3 ) )
theorem Th5: :: FSCIRC_2:5
for b
1 being
Natfor b
2, b
3 being
FinSeqLen of b
1for b
4, b
5, b
6, b
7 being
FinSequence holds
( b
1 -BitSubtracterStr (b2 ^ b4),
(b3 ^ b6) = b
1 -BitSubtracterStr (b2 ^ b5),
(b3 ^ b7) & b
1 -BitSubtracterCirc (b2 ^ b4),
(b3 ^ b6) = b
1 -BitSubtracterCirc (b2 ^ b5),
(b3 ^ b7) & b
1 -BitBorrowOutput (b2 ^ b4),
(b3 ^ b6) = b
1 -BitBorrowOutput (b2 ^ b5),
(b3 ^ b7) )
theorem Th6: :: FSCIRC_2:6
for b
1 being
Natfor b
2, b
3 being
FinSeqLen of b
1for b
4, b
5 being
set holds
(
(b1 + 1) -BitSubtracterStr (b2 ^ <*b4*>),
(b3 ^ <*b5*>) = (b1 -BitSubtracterStr b2,b3) +* (BitSubtracterWithBorrowStr b4,b5,(b1 -BitBorrowOutput b2,b3)) &
(b1 + 1) -BitSubtracterCirc (b2 ^ <*b4*>),
(b3 ^ <*b5*>) = (b1 -BitSubtracterCirc b2,b3) +* (BitSubtracterWithBorrowCirc b4,b5,(b1 -BitBorrowOutput b2,b3)) &
(b1 + 1) -BitBorrowOutput (b2 ^ <*b4*>),
(b3 ^ <*b5*>) = BorrowOutput b
4,b
5,
(b1 -BitBorrowOutput b2,b3) )
theorem Th7: :: FSCIRC_2:7
for b
1 being
Natfor b
2, b
3 being
FinSequence holds
(
(b1 + 1) -BitSubtracterStr b
2,b
3 = (b1 -BitSubtracterStr b2,b3) +* (BitSubtracterWithBorrowStr (b2 . (b1 + 1)),(b3 . (b1 + 1)),(b1 -BitBorrowOutput b2,b3)) &
(b1 + 1) -BitSubtracterCirc b
2,b
3 = (b1 -BitSubtracterCirc b2,b3) +* (BitSubtracterWithBorrowCirc (b2 . (b1 + 1)),(b3 . (b1 + 1)),(b1 -BitBorrowOutput b2,b3)) &
(b1 + 1) -BitBorrowOutput b
2,b
3 = BorrowOutput (b2 . (b1 + 1)),
(b3 . (b1 + 1)),
(b1 -BitBorrowOutput b2,b3) )
theorem Th8: :: FSCIRC_2:8
theorem Th9: :: FSCIRC_2:9
definition
let c
1, c
2 be
Nat;
assume E10:
( c
1 >= 1 & c
1 <= c
2 )
;
let c
3, c
4 be
FinSequence;
func c
1,c
2 -BitSubtracterOutput c
3,c
4 -> Element of
InnerVertices (a2 -BitSubtracterStr a3,a4) means :
Def4:
:: FSCIRC_2:def 4
ex b
1 being
Nat st
( a
1 = b
1 + 1 & a
5 = BitSubtracterOutput (a3 . a1),
(a4 . a1),
(b1 -BitBorrowOutput a3,a4) );
uniqueness
for b1, b2 being Element of InnerVertices (c2 -BitSubtracterStr c3,c4) holds
( ex b3 being Nat st
( c1 = b3 + 1 & b1 = BitSubtracterOutput (c3 . c1),(c4 . c1),(b3 -BitBorrowOutput c3,c4) ) & ex b3 being Nat st
( c1 = b3 + 1 & b2 = BitSubtracterOutput (c3 . c1),(c4 . c1),(b3 -BitBorrowOutput c3,c4) ) implies b1 = b2 )
;
existence
ex b1 being Element of InnerVertices (c2 -BitSubtracterStr c3,c4)ex b2 being Nat st
( c1 = b2 + 1 & b1 = BitSubtracterOutput (c3 . c1),(c4 . c1),(b2 -BitBorrowOutput c3,c4) )
end;
:: deftheorem Def4 defines -BitSubtracterOutput FSCIRC_2:def 4 :
theorem Th10: :: FSCIRC_2:10
theorem Th11: :: FSCIRC_2:11
theorem Th12: :: FSCIRC_2:12
for b
1, b
2, b
3 being
set holds
InnerVertices (BorrowIStr b1,b2,b3) = {[<*b1,b2*>,and2a ],[<*b2,b3*>,and2 ],[<*b1,b3*>,and2a ]}
theorem Th13: :: FSCIRC_2:13
for b
1, b
2, b
3 being
set holds
( b
1 <> [<*b2,b3*>,and2 ] & b
2 <> [<*b1,b3*>,and2a ] & b
3 <> [<*b1,b2*>,and2a ] implies
InputVertices (BorrowIStr b1,b2,b3) = {b1,b2,b3} )
theorem Th14: :: FSCIRC_2:14
for b
1, b
2, b
3 being
set holds
InnerVertices (BorrowStr b1,b2,b3) = {[<*b1,b2*>,and2a ],[<*b2,b3*>,and2 ],[<*b1,b3*>,and2a ]} \/ {(BorrowOutput b1,b2,b3)}
theorem Th15: :: FSCIRC_2:15
for b
1, b
2, b
3 being
set holds
( b
1 <> [<*b2,b3*>,and2 ] & b
2 <> [<*b1,b3*>,and2a ] & b
3 <> [<*b1,b2*>,and2a ] implies
InputVertices (BorrowStr b1,b2,b3) = {b1,b2,b3} )
theorem Th16: :: FSCIRC_2:16
for b
1, b
2, b
3 being
set holds
( b
1 <> [<*b2,b3*>,and2 ] & b
2 <> [<*b1,b3*>,and2a ] & b
3 <> [<*b1,b2*>,and2a ] & b
3 <> [<*b1,b2*>,'xor' ] implies
InputVertices (BitSubtracterWithBorrowStr b1,b2,b3) = {b1,b2,b3} )
theorem Th17: :: FSCIRC_2:17
for b
1, b
2, b
3 being
set holds
InnerVertices (BitSubtracterWithBorrowStr b1,b2,b3) = ({[<*b1,b2*>,'xor' ],(2GatesCircOutput b1,b2,b3,'xor' )} \/ {[<*b1,b2*>,and2a ],[<*b2,b3*>,and2 ],[<*b1,b3*>,and2a ]}) \/ {(BorrowOutput b1,b2,b3)}
theorem Th18: :: FSCIRC_2:18
theorem Th19: :: FSCIRC_2:19
theorem Th20: :: FSCIRC_2:20
theorem Th21: :: FSCIRC_2:21
Lemma20:
for b1, b2, b3 being set
for b4 being State of (BorrowCirc b1,b2,b3)
for b5, b6, b7 being Element of BOOLEAN holds
( b5 = b4 . b1 & b6 = b4 . b2 & b7 = b4 . b3 implies ( (Following b4) . [<*b1,b2*>,and2a ] = ('not' b5) '&' b6 & (Following b4) . [<*b2,b3*>,and2 ] = b6 '&' b7 & (Following b4) . [<*b1,b3*>,and2a ] = ('not' b5) '&' b7 ) )
theorem Th22: :: FSCIRC_2:22
for b
1, b
2, b
3 being
set for b
4 being
State of
(BorrowCirc b1,b2,b3)for b
5, b
6, b
7 being
Element of
BOOLEAN holds
( b
5 = b
4 . [<*b1,b2*>,and2a ] & b
6 = b
4 . [<*b2,b3*>,and2 ] & b
7 = b
4 . [<*b1,b3*>,and2a ] implies
(Following b4) . (BorrowOutput b1,b2,b3) = (b5 'or' b6) 'or' b
7 )
Lemma22:
for b1, b2, b3 being set holds
( b1 <> [<*b2,b3*>,and2 ] & b2 <> [<*b1,b3*>,and2a ] & b3 <> [<*b1,b2*>,and2a ] implies for b4 being State of (BorrowCirc b1,b2,b3)
for b5, b6, b7 being Element of BOOLEAN holds
( b5 = b4 . b1 & b6 = b4 . b2 & b7 = b4 . b3 implies ( (Following b4,2) . (BorrowOutput b1,b2,b3) = ((('not' b5) '&' b6) 'or' (b6 '&' b7)) 'or' (('not' b5) '&' b7) & (Following b4,2) . [<*b1,b2*>,and2a ] = ('not' b5) '&' b6 & (Following b4,2) . [<*b2,b3*>,and2 ] = b6 '&' b7 & (Following b4,2) . [<*b1,b3*>,and2a ] = ('not' b5) '&' b7 ) ) )
theorem Th23: :: FSCIRC_2:23
for b
1, b
2, b
3 being
set holds
( b
1 <> [<*b2,b3*>,and2 ] & b
2 <> [<*b1,b3*>,and2a ] & b
3 <> [<*b1,b2*>,and2a ] & b
3 <> [<*b1,b2*>,'xor' ] implies for b
4 being
State of
(BorrowCirc b1,b2,b3) holds
Following b
4,2 is
stable )
theorem Th24: :: FSCIRC_2:24
for b
1, b
2, b
3 being
set holds
( b
1 <> [<*b2,b3*>,and2 ] & b
2 <> [<*b1,b3*>,and2a ] & b
3 <> [<*b1,b2*>,and2a ] & b
3 <> [<*b1,b2*>,'xor' ] implies for b
4 being
State of
(BitSubtracterWithBorrowCirc b1,b2,b3)for b
5, b
6, b
7 being
Element of
BOOLEAN holds
( b
5 = b
4 . b
1 & b
6 = b
4 . b
2 & b
7 = b
4 . b
3 implies (
(Following b4,2) . (BitSubtracterOutput b1,b2,b3) = (b5 'xor' b6) 'xor' b
7 &
(Following b4,2) . (BorrowOutput b1,b2,b3) = ((('not' b5) '&' b6) 'or' (b6 '&' b7)) 'or' (('not' b5) '&' b7) ) ) )
theorem Th25: :: FSCIRC_2:25
for b
1, b
2, b
3 being
set holds
( b
1 <> [<*b2,b3*>,and2 ] & b
2 <> [<*b1,b3*>,and2a ] & b
3 <> [<*b1,b2*>,and2a ] & b
3 <> [<*b1,b2*>,'xor' ] implies for b
4 being
State of
(BitSubtracterWithBorrowCirc b1,b2,b3) holds
Following b
4,2 is
stable )
theorem Th26: :: FSCIRC_2:26