fscirc_1.miz
begin
reserve x,y,c for
set;
definition
let x,y,c be
set;
::
FSCIRC_1:def1
func
BitSubtracterOutput (x,y,c) ->
Element of (
InnerVertices (
2GatesCircStr (x,y,c,
'xor' ))) equals (
2GatesCircOutput (x,y,c,
'xor' ));
coherence ;
end
definition
let x,y,c be
set;
::
FSCIRC_1:def2
func
BitSubtracterCirc (x,y,c) ->
strict
Boolean
gate`2=den
Circuit of (
2GatesCircStr (x,y,c,
'xor' )) equals (
2GatesCircuit (x,y,c,
'xor' ));
coherence ;
end
definition
let x,y,c be
set;
::
FSCIRC_1:def3
func
BorrowIStr (x,y,c) ->
unsplit
gate`1=arity
gate`2isBoolean non
void
strict non
empty
ManySortedSign equals (((
1GateCircStr (
<*x, y*>,
and2a ))
+* (
1GateCircStr (
<*y, c*>,
and2 )))
+* (
1GateCircStr (
<*x, c*>,
and2a )));
correctness ;
end
definition
let x,y,c be
set;
::
FSCIRC_1:def4
func
BorrowStr (x,y,c) ->
unsplit
gate`1=arity
gate`2isBoolean non
void
strict non
empty
ManySortedSign equals ((
BorrowIStr (x,y,c))
+* (
1GateCircStr (
<*
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ]*>,
or3 )));
correctness ;
end
definition
let x,y,c be
set;
::
FSCIRC_1:def5
func
BorrowICirc (x,y,c) ->
strict
Boolean
gate`2=den
Circuit of (
BorrowIStr (x,y,c)) equals (((
1GateCircuit (x,y,
and2a ))
+* (
1GateCircuit (y,c,
and2 )))
+* (
1GateCircuit (x,c,
and2a )));
coherence ;
end
theorem ::
FSCIRC_1:1
Th1: (
InnerVertices (
BorrowStr (x,y,c))) is
Relation
proof
(
InnerVertices (
1GateCircStr (
<*x, y*>,
and2a ))) is
Relation & (
InnerVertices (
1GateCircStr (
<*y, c*>,
and2 ))) is
Relation by
FACIRC_1: 38;
then (
InnerVertices (
1GateCircStr (
<*x, c*>,
and2a ))) is
Relation & (
InnerVertices ((
1GateCircStr (
<*x, y*>,
and2a ))
+* (
1GateCircStr (
<*y, c*>,
and2 )))) is
Relation by
FACIRC_1: 3,
FACIRC_1: 38;
then (
InnerVertices (
1GateCircStr (
<*
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ]*>,
or3 ))) is
Relation & (
InnerVertices (
BorrowIStr (x,y,c))) is
Relation by
FACIRC_1: 3,
FACIRC_1: 38;
hence thesis by
FACIRC_1: 3;
end;
theorem ::
FSCIRC_1:2
Th2: for x,y,c be non
pair
set holds (
InputVertices (
BorrowStr (x,y,c))) is
without_pairs
proof
let x,y,c be non
pair
set;
set M = (
BorrowStr (x,y,c)), MI = (
BorrowIStr (x,y,c));
set S = (
1GateCircStr (
<*
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ]*>,
or3 ));
given xx be
pair
object such that
A1: xx
in (
InputVertices M);
A2: (
1GateCircStr (
<*x, y*>,
and2a ))
tolerates (
1GateCircStr (
<*y, c*>,
and2 )) by
CIRCCOMB: 47;
A3: (
InnerVertices (
1GateCircStr (
<*x, c*>,
and2a )))
=
{
[
<*x, c*>,
and2a ]} & ((
1GateCircStr (
<*x, y*>,
and2a ))
+* (
1GateCircStr (
<*y, c*>,
and2 )))
tolerates (
1GateCircStr (
<*x, c*>,
and2a )) by
CIRCCOMB: 42,
CIRCCOMB: 47;
(
InnerVertices (
1GateCircStr (
<*x, y*>,
and2a )))
=
{
[
<*x, y*>,
and2a ]} & (
InnerVertices (
1GateCircStr (
<*y, c*>,
and2 )))
=
{
[
<*y, c*>,
and2 ]} by
CIRCCOMB: 42;
then (
InnerVertices ((
1GateCircStr (
<*x, y*>,
and2a ))
+* (
1GateCircStr (
<*y, c*>,
and2 ))))
= (
{
[
<*x, y*>,
and2a ]}
\/
{
[
<*y, c*>,
and2 ]}) by
A2,
CIRCCOMB: 11;
then
A4: (
InnerVertices MI)
= ((
{
[
<*x, y*>,
and2a ]}
\/
{
[
<*y, c*>,
and2 ]})
\/
{
[
<*x, c*>,
and2a ]}) by
A3,
CIRCCOMB: 11
.= (
{
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ]}
\/
{
[
<*x, c*>,
and2a ]}) by
ENUMSET1: 1
.=
{
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ]} by
ENUMSET1: 3;
(
InputVertices S)
=
{
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ]} by
FACIRC_1: 42;
then
A5: ((
InputVertices S)
\ (
InnerVertices MI))
=
{} by
A4,
XBOOLE_1: 37;
(
InputVertices (
1GateCircStr (
<*x, y*>,
and2a ))) is
without_pairs & (
InputVertices (
1GateCircStr (
<*y, c*>,
and2 ))) is
without_pairs by
FACIRC_1: 41;
then (
InputVertices (
1GateCircStr (
<*x, c*>,
and2a ))) is
without_pairs & (
InputVertices ((
1GateCircStr (
<*x, y*>,
and2a ))
+* (
1GateCircStr (
<*y, c*>,
and2 )))) is
without_pairs by
FACIRC_1: 9,
FACIRC_1: 41;
then
A6: (
InputVertices MI) is
without_pairs by
FACIRC_1: 9;
(
InnerVertices S) is
Relation by
FACIRC_1: 38;
then (
InputVertices M)
= ((
InputVertices MI)
\/ ((
InputVertices S)
\ (
InnerVertices MI))) by
A6,
FACIRC_1: 6;
hence thesis by
A6,
A1,
A5;
end;
theorem ::
FSCIRC_1:3
for s be
State of (
BorrowICirc (x,y,c)), a,b be
Element of
BOOLEAN st a
= (s
. x) & b
= (s
. y) holds ((
Following s)
.
[
<*x, y*>,
and2a ])
= ((
'not' a)
'&' b)
proof
set xy =
<*x, y*>, yc =
<*y, c*>, xc =
<*x, c*>;
set S1 = (
1GateCircStr (xy,
and2a )), A1 = (
1GateCircuit (x,y,
and2a ));
set S2 = (
1GateCircStr (yc,
and2 )), A2 = (
1GateCircuit (y,c,
and2 ));
set S3 = (
1GateCircStr (xc,
and2a )), A3 = (
1GateCircuit (x,c,
and2a ));
set S = (
BorrowIStr (x,y,c)), A = (
BorrowICirc (x,y,c));
set v1 =
[xy,
and2a ];
let s be
State of A;
let a,b be
Element of
BOOLEAN such that
A1: a
= (s
. x) & b
= (s
. y);
reconsider xx = x, yy = y as
Vertex of S1 by
FACIRC_1: 43;
reconsider v1 as
Element of (
InnerVertices S1) by
FACIRC_1: 47;
A2: S
= (S1
+* (S2
+* S3)) by
CIRCCOMB: 6;
then
reconsider v = v1 as
Element of (
InnerVertices S) by
FACIRC_1: 21;
A3: A
= (A1
+* (A2
+* A3)) by
FACIRC_1: 25;
then
reconsider s1 = (s
| the
carrier of S1) as
State of A1 by
FACIRC_1: 26;
reconsider xx, yy as
Vertex of S by
A2,
FACIRC_1: 20;
A4: (
dom s1)
= the
carrier of S1 by
CIRCUIT1: 3;
thus ((
Following s)
.
[xy,
and2a ])
= ((
Following s1)
. v) by
A2,
A3,
CIRCCOMB: 64
.= (
and2a
.
<*(s1
. xx), (s1
. yy)*>) by
FACIRC_1: 50
.= (
and2a
.
<*(s
. xx), (s1
. yy)*>) by
A4,
FUNCT_1: 47
.= (
and2a
.
<*(s
. xx), (s
. yy)*>) by
A4,
FUNCT_1: 47
.= ((
'not' a)
'&' b) by
A1,
TWOSCOMP:def 2;
end;
theorem ::
FSCIRC_1:4
for s be
State of (
BorrowICirc (x,y,c)), a,b be
Element of
BOOLEAN st a
= (s
. y) & b
= (s
. c) holds ((
Following s)
.
[
<*y, c*>,
and2 ])
= (a
'&' b)
proof
set xy =
<*x, y*>, yc =
<*y, c*>, xc =
<*x, c*>;
set S1 = (
1GateCircStr (xy,
and2a )), A1 = (
1GateCircuit (x,y,
and2a ));
set S2 = (
1GateCircStr (yc,
and2 )), A2 = (
1GateCircuit (y,c,
and2 ));
set S3 = (
1GateCircStr (xc,
and2a )), A3 = (
1GateCircuit (x,c,
and2a ));
set S = (
BorrowIStr (x,y,c)), A = (
BorrowICirc (x,y,c));
set v2 =
[yc,
and2 ];
let s be
State of A;
let a,b be
Element of
BOOLEAN such that
A1: a
= (s
. y) & b
= (s
. c);
reconsider yy = y, cc = c as
Vertex of S2 by
FACIRC_1: 43;
reconsider v2 as
Element of (
InnerVertices S2) by
FACIRC_1: 47;
A2: (S1
+* S2)
= (S2
+* S1) by
FACIRC_1: 23;
then
A3: S
= (S2
+* (S1
+* S3)) by
CIRCCOMB: 6;
then
reconsider v = v2 as
Element of (
InnerVertices S) by
FACIRC_1: 21;
(A1
+* A2)
= (A2
+* A1) by
FACIRC_1: 24;
then
A4: A
= (A2
+* (A1
+* A3)) by
A2,
FACIRC_1: 25;
then
reconsider s2 = (s
| the
carrier of S2) as
State of A2 by
FACIRC_1: 26;
reconsider yy, cc as
Vertex of S by
A3,
FACIRC_1: 20;
A5: (
dom s2)
= the
carrier of S2 by
CIRCUIT1: 3;
thus ((
Following s)
.
[yc,
and2 ])
= ((
Following s2)
. v) by
A3,
A4,
CIRCCOMB: 64
.= (
and2
.
<*(s2
. yy), (s2
. cc)*>) by
FACIRC_1: 50
.= (
and2
.
<*(s
. yy), (s2
. cc)*>) by
A5,
FUNCT_1: 47
.= (
and2
.
<*(s
. yy), (s
. cc)*>) by
A5,
FUNCT_1: 47
.= (a
'&' b) by
A1,
FACIRC_1:def 6;
end;
theorem ::
FSCIRC_1:5
for s be
State of (
BorrowICirc (x,y,c)), a,b be
Element of
BOOLEAN st a
= (s
. x) & b
= (s
. c) holds ((
Following s)
.
[
<*x, c*>,
and2a ])
= ((
'not' a)
'&' b)
proof
set xc =
<*x, c*>;
set S3 = (
1GateCircStr (xc,
and2a )), A3 = (
1GateCircuit (x,c,
and2a ));
set S = (
BorrowIStr (x,y,c)), A = (
BorrowICirc (x,y,c));
set v3 =
[xc,
and2a ];
let s be
State of A;
let a,b be
Element of
BOOLEAN such that
A1: a
= (s
. x) & b
= (s
. c);
reconsider xx = x, cc = c as
Vertex of S3 by
FACIRC_1: 43;
reconsider s3 = (s
| the
carrier of S3) as
State of A3 by
FACIRC_1: 26;
reconsider v3 as
Element of (
InnerVertices S3) by
FACIRC_1: 47;
reconsider v = v3 as
Element of (
InnerVertices S) by
FACIRC_1: 21;
A2: (
dom s3)
= the
carrier of S3 by
CIRCUIT1: 3;
reconsider xx, cc as
Vertex of S by
FACIRC_1: 20;
thus ((
Following s)
.
[xc,
and2a ])
= ((
Following s3)
. v) by
CIRCCOMB: 64
.= (
and2a
.
<*(s3
. xx), (s3
. cc)*>) by
FACIRC_1: 50
.= (
and2a
.
<*(s
. xx), (s3
. cc)*>) by
A2,
FUNCT_1: 47
.= (
and2a
.
<*(s
. xx), (s
. cc)*>) by
A2,
FUNCT_1: 47
.= ((
'not' a)
'&' b) by
A1,
TWOSCOMP:def 2;
end;
definition
let x,y,c be
set;
::
FSCIRC_1:def6
func
BorrowOutput (x,y,c) ->
Element of (
InnerVertices (
BorrowStr (x,y,c))) equals
[
<*
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ]*>,
or3 ];
coherence
proof
[
<*
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ]*>,
or3 ]
in (
InnerVertices (
1GateCircStr (
<*
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ]*>,
or3 ))) by
FACIRC_1: 47;
hence thesis by
FACIRC_1: 21;
end;
correctness ;
end
definition
let x,y,c be
set;
::
FSCIRC_1:def7
func
BorrowCirc (x,y,c) ->
strict
Boolean
gate`2=den
Circuit of (
BorrowStr (x,y,c)) equals ((
BorrowICirc (x,y,c))
+* (
1GateCircuit (
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ],
or3 )));
coherence ;
end
theorem ::
FSCIRC_1:6
Th6: x
in the
carrier of (
BorrowStr (x,y,c)) & y
in the
carrier of (
BorrowStr (x,y,c)) & c
in the
carrier of (
BorrowStr (x,y,c))
proof
c
in the
carrier of (
1GateCircStr (
<*x, c*>,
and2a )) by
FACIRC_1: 43;
then
A1: c
in the
carrier of (
BorrowIStr (x,y,c)) 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, c*>,
and2 ))) by
FACIRC_1: 20;
then
A2: y
in the
carrier of (
BorrowIStr (x,y,c)) by
FACIRC_1: 20;
x
in the
carrier of (
1GateCircStr (
<*x, c*>,
and2a )) by
FACIRC_1: 43;
then x
in the
carrier of (
BorrowIStr (x,y,c)) by
FACIRC_1: 20;
hence thesis by
A2,
A1,
FACIRC_1: 20;
end;
theorem ::
FSCIRC_1:7
Th7:
[
<*x, y*>,
and2a ]
in (
InnerVertices (
BorrowStr (x,y,c))) &
[
<*y, c*>,
and2 ]
in (
InnerVertices (
BorrowStr (x,y,c))) &
[
<*x, c*>,
and2a ]
in (
InnerVertices (
BorrowStr (x,y,c)))
proof
[
<*x, y*>,
and2a ]
in (
InnerVertices (
1GateCircStr (
<*x, y*>,
and2a ))) by
FACIRC_1: 47;
then
[
<*x, y*>,
and2a ]
in (
InnerVertices ((
1GateCircStr (
<*x, y*>,
and2a ))
+* (
1GateCircStr (
<*y, c*>,
and2 )))) by
FACIRC_1: 21;
then
A1:
[
<*x, y*>,
and2a ]
in (
InnerVertices (
BorrowIStr (x,y,c))) by
FACIRC_1: 21;
[
<*y, c*>,
and2 ]
in (
InnerVertices (
1GateCircStr (
<*y, c*>,
and2 ))) by
FACIRC_1: 47;
then
[
<*y, c*>,
and2 ]
in (
InnerVertices ((
1GateCircStr (
<*x, y*>,
and2a ))
+* (
1GateCircStr (
<*y, c*>,
and2 )))) by
FACIRC_1: 21;
then
A2:
[
<*y, c*>,
and2 ]
in (
InnerVertices (
BorrowIStr (x,y,c))) by
FACIRC_1: 21;
[
<*x, c*>,
and2a ]
in (
InnerVertices (
1GateCircStr (
<*x, c*>,
and2a ))) by
FACIRC_1: 47;
then
[
<*x, c*>,
and2a ]
in (
InnerVertices (
BorrowIStr (x,y,c))) by
FACIRC_1: 21;
hence thesis by
A1,
A2,
FACIRC_1: 21;
end;
theorem ::
FSCIRC_1:8
Th8: for x,y,c be non
pair
set holds x
in (
InputVertices (
BorrowStr (x,y,c))) & y
in (
InputVertices (
BorrowStr (x,y,c))) & c
in (
InputVertices (
BorrowStr (x,y,c)))
proof
let x,y,c be non
pair
set;
assume
A1: not thesis;
A2: c
in the
carrier of (
BorrowStr (x,y,c)) by
Th6;
A3: (
InnerVertices (
BorrowStr (x,y,c))) is
Relation by
Th1;
x
in the
carrier of (
BorrowStr (x,y,c)) & y
in the
carrier of (
BorrowStr (x,y,c)) by
Th6;
then x
in (
InnerVertices (
BorrowStr (x,y,c))) or y
in (
InnerVertices (
BorrowStr (x,y,c))) or c
in (
InnerVertices (
BorrowStr (x,y,c))) by
A2,
A1,
XBOOLE_0:def 5;
then (ex a1,b1 be
object st x
=
[a1, b1]) or (ex a1,b1 be
object st y
=
[a1, b1]) or ex a1,b1 be
object st c
=
[a1, b1] by
A3,
RELAT_1:def 1;
hence contradiction;
end;
theorem ::
FSCIRC_1:9
Th9: for x,y,c be non
pair
set holds (
InputVertices (
BorrowStr (x,y,c)))
=
{x, y, c} & (
InnerVertices (
BorrowStr (x,y,c)))
= (
{
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ]}
\/
{(
BorrowOutput (x,y,c))})
proof
let x,y,c be non
pair
set;
set xy =
<*x, y*>, yc =
<*y, c*>, xc =
<*x, c*>;
set xy1 =
[xy,
and2a ], yc1 =
[yc,
and2 ], xc1 =
[xc,
and2a ];
set MI = (
BorrowIStr (x,y,c)), S = (
1GateCircStr (
<*xy1, yc1, xc1*>,
or3 ));
set M = (
BorrowStr (x,y,c));
A1: (
InputVertices (
1GateCircStr (
<*x, y*>,
and2a )))
=
{x, y} & (
InputVertices (
1GateCircStr (
<*x, c*>,
and2a )))
=
{x, c} by
FACIRC_1: 40;
A2: (
InputVertices (
1GateCircStr (
<*y, c*>,
and2 )))
=
{y, c} by
FACIRC_1: 40;
A3: (
InnerVertices (
1GateCircStr (
<*x, y*>,
and2a )))
=
{
[
<*x, y*>,
and2a ]} & (
InnerVertices (
1GateCircStr (
<*y, c*>,
and2 )))
=
{
[
<*y, c*>,
and2 ]} by
CIRCCOMB: 42;
A4: (
InnerVertices S) is
Relation by
FACIRC_1: 38;
A5: (
InputVertices (
1GateCircStr (
<*x, y*>,
and2a ))) is
without_pairs & (
InputVertices (
1GateCircStr (
<*y, c*>,
and2 ))) is
without_pairs by
FACIRC_1: 41;
then
A6: (
InputVertices (
1GateCircStr (
<*x, c*>,
and2a ))) is
without_pairs & (
InputVertices ((
1GateCircStr (
<*x, y*>,
and2a ))
+* (
1GateCircStr (
<*y, c*>,
and2 )))) is
without_pairs by
FACIRC_1: 9,
FACIRC_1: 41;
then (
InputVertices MI) is
without_pairs by
FACIRC_1: 9;
then
A7: (
InputVertices M)
= ((
InputVertices MI)
\/ ((
InputVertices S)
\ (
InnerVertices MI))) by
A4,
FACIRC_1: 6;
A8: (
InnerVertices (
1GateCircStr (
<*x, c*>,
and2a )))
=
{
[
<*x, c*>,
and2a ]} by
CIRCCOMB: 42;
(
1GateCircStr (
<*x, y*>,
and2a ))
tolerates (
1GateCircStr (
<*y, c*>,
and2 )) by
CIRCCOMB: 47;
then
A9: (
InnerVertices ((
1GateCircStr (
<*x, y*>,
and2a ))
+* (
1GateCircStr (
<*y, c*>,
and2 ))))
= (
{
[
<*x, y*>,
and2a ]}
\/
{
[
<*y, c*>,
and2 ]}) by
A3,
CIRCCOMB: 11;
((
1GateCircStr (
<*x, y*>,
and2a ))
+* (
1GateCircStr (
<*y, c*>,
and2 )))
tolerates (
1GateCircStr (
<*x, c*>,
and2a )) by
CIRCCOMB: 47;
then
A10: (
InnerVertices MI)
= ((
{
[
<*x, y*>,
and2a ]}
\/
{
[
<*y, c*>,
and2 ]})
\/
{
[
<*x, c*>,
and2a ]}) by
A8,
A9,
CIRCCOMB: 11
.= (
{
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ]}
\/
{
[
<*x, c*>,
and2a ]}) by
ENUMSET1: 1
.=
{
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ]} by
ENUMSET1: 3;
(
InputVertices S)
=
{
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ]} by
FACIRC_1: 42;
then
A11: ((
InputVertices S)
\ (
InnerVertices MI))
=
{} by
A10,
XBOOLE_1: 37;
(
InnerVertices ((
1GateCircStr (
<*x, y*>,
and2a ))
+* (
1GateCircStr (
<*y, c*>,
and2 ))))
=
{
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ]} by
A9,
ENUMSET1: 1;
hence (
InputVertices M)
= ((
InputVertices ((
1GateCircStr (
<*x, y*>,
and2a ))
+* (
1GateCircStr (
<*y, c*>,
and2 ))))
\/ (
InputVertices (
1GateCircStr (
<*x, c*>,
and2a )))) by
A6,
A7,
A8,
A11,
FACIRC_1: 7
.= (((
InputVertices (
1GateCircStr (
<*x, y*>,
and2a )))
\/ (
InputVertices (
1GateCircStr (
<*y, c*>,
and2 ))))
\/ (
InputVertices (
1GateCircStr (
<*x, c*>,
and2a )))) by
A5,
A3,
FACIRC_1: 7
.= (
{x, y, y, c}
\/
{c, x}) by
A1,
A2,
ENUMSET1: 5
.= (
{y, y, x, c}
\/
{c, x}) by
ENUMSET1: 67
.= (
{y, x, c}
\/
{c, x}) by
ENUMSET1: 31
.= (
{x, y, c}
\/
{c, x}) by
ENUMSET1: 58
.= (
{x, y, c}
\/ (
{c}
\/
{x})) by
ENUMSET1: 1
.= ((
{x, y, c}
\/
{c})
\/
{x}) by
XBOOLE_1: 4
.= ((
{c, x, y}
\/
{c})
\/
{x}) by
ENUMSET1: 59
.= (
{c, c, x, y}
\/
{x}) by
ENUMSET1: 4
.= (
{c, x, y}
\/
{x}) by
ENUMSET1: 31
.= (
{x, y, c}
\/
{x}) by
ENUMSET1: 59
.=
{x, x, y, c} by
ENUMSET1: 4
.=
{x, y, c} by
ENUMSET1: 31;
MI
tolerates S by
CIRCCOMB: 47;
hence (
InnerVertices M)
= ((
InnerVertices MI)
\/ (
InnerVertices S)) by
CIRCCOMB: 11
.= (
{
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ]}
\/
{(
BorrowOutput (x,y,c))}) by
A10,
CIRCCOMB: 42;
end;
Lm1: for x,y,c be non
pair
set holds for s be
State of (
BorrowCirc (x,y,c)) holds for a1,a2,a3 be
Element of
BOOLEAN st a1
= (s
. x) & a2
= (s
. y) & a3
= (s
. c) holds ((
Following s)
.
[
<*x, y*>,
and2a ])
= ((
'not' a1)
'&' a2) & ((
Following s)
.
[
<*y, c*>,
and2 ])
= (a2
'&' a3) & ((
Following s)
.
[
<*x, c*>,
and2a ])
= ((
'not' a1)
'&' a3)
proof
let x,y,c be non
pair
set;
let s be
State of (
BorrowCirc (x,y,c));
let a1,a2,a3 be
Element of
BOOLEAN such that
A1: a1
= (s
. x) and
A2: a2
= (s
. y) and
A3: a3
= (s
. c);
set S = (
BorrowStr (x,y,c));
A4: (
InnerVertices S)
= the
carrier' of S by
FACIRC_1: 37;
A5: y
in the
carrier of S by
Th6;
A6: x
in the
carrier of S by
Th6;
A7: (
dom s)
= the
carrier of S by
CIRCUIT1: 3;
[
<*x, y*>,
and2a ]
in (
InnerVertices (
BorrowStr (x,y,c))) by
Th7;
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;
A8: c
in the
carrier of S by
Th6;
[
<*y, c*>,
and2 ]
in (
InnerVertices (
BorrowStr (x,y,c))) by
Th7;
hence ((
Following s)
.
[
<*y, c*>,
and2 ])
= (
and2
. (s
*
<*y, c*>)) by
A4,
FACIRC_1: 35
.= (
and2
.
<*a2, a3*>) by
A2,
A3,
A7,
A5,
A8,
FINSEQ_2: 125
.= (a2
'&' a3) by
FACIRC_1:def 6;
[
<*x, c*>,
and2a ]
in (
InnerVertices (
BorrowStr (x,y,c))) by
Th7;
hence ((
Following s)
.
[
<*x, c*>,
and2a ])
= (
and2a
. (s
*
<*x, c*>)) by
A4,
FACIRC_1: 35
.= (
and2a
.
<*a1, a3*>) by
A1,
A3,
A7,
A6,
A8,
FINSEQ_2: 125
.= ((
'not' a1)
'&' a3) by
TWOSCOMP:def 2;
end;
theorem ::
FSCIRC_1:10
for x,y,c be non
pair
set holds for s be
State of (
BorrowCirc (x,y,c)) holds for a1,a2 be
Element of
BOOLEAN st a1
= (s
. x) & a2
= (s
. y) holds ((
Following s)
.
[
<*x, y*>,
and2a ])
= ((
'not' a1)
'&' a2)
proof
let x,y,c be non
pair
set;
reconsider a = c as
Vertex of (
BorrowStr (x,y,c)) by
Th6;
let s be
State of (
BorrowCirc (x,y,c));
(s
. a) is
Element of
BOOLEAN ;
hence thesis by
Lm1;
end;
theorem ::
FSCIRC_1:11
for x,y,c be non
pair
set holds for s be
State of (
BorrowCirc (x,y,c)) holds for a2,a3 be
Element of
BOOLEAN st a2
= (s
. y) & a3
= (s
. c) holds ((
Following s)
.
[
<*y, c*>,
and2 ])
= (a2
'&' a3)
proof
let x,y,c be non
pair
set;
reconsider a = x as
Vertex of (
BorrowStr (x,y,c)) by
Th6;
let s be
State of (
BorrowCirc (x,y,c));
(s
. a) is
Element of
BOOLEAN ;
hence thesis by
Lm1;
end;
theorem ::
FSCIRC_1:12
for x,y,c be non
pair
set holds for s be
State of (
BorrowCirc (x,y,c)) holds for a1,a3 be
Element of
BOOLEAN st a1
= (s
. x) & a3
= (s
. c) holds ((
Following s)
.
[
<*x, c*>,
and2a ])
= ((
'not' a1)
'&' a3)
proof
let x,y,c be non
pair
set;
reconsider a = y as
Vertex of (
BorrowStr (x,y,c)) by
Th6;
let s be
State of (
BorrowCirc (x,y,c));
(s
. a) is
Element of
BOOLEAN ;
hence thesis by
Lm1;
end;
theorem ::
FSCIRC_1:13
Th13: for x,y,c be non
pair
set holds for s be
State of (
BorrowCirc (x,y,c)) holds for a1,a2,a3 be
Element of
BOOLEAN st a1
= (s
.
[
<*x, y*>,
and2a ]) & a2
= (s
.
[
<*y, c*>,
and2 ]) & a3
= (s
.
[
<*x, c*>,
and2a ]) holds ((
Following s)
. (
BorrowOutput (x,y,c)))
= ((a1
'or' a2)
'or' a3)
proof
let x,y,c be non
pair
set;
set xy =
<*x, y*>, yc =
<*y, c*>, xc =
<*x, c*>;
set xy1 =
[xy,
and2a ], yc1 =
[yc,
and2 ], xc1 =
[xc,
and2a ];
set S = (
BorrowStr (x,y,c));
reconsider xy1, yc1, xc1 as
Element of (
InnerVertices S) by
Th7;
let s be
State of (
BorrowCirc (x,y,c));
let a1,a2,a3 be
Element of
BOOLEAN such that
A1: a1
= (s
.
[
<*x, y*>,
and2a ]) & a2
= (s
.
[
<*y, c*>,
and2 ]) & a3
= (s
.
[
<*x, c*>,
and2a ]);
A2: (
dom s)
= the
carrier of S by
CIRCUIT1: 3;
(
InnerVertices S)
= the
carrier' of S by
FACIRC_1: 37;
hence ((
Following s)
. (
BorrowOutput (x,y,c)))
= (
or3
. (s
*
<*xy1, yc1, xc1*>)) by
FACIRC_1: 35
.= (
or3
.
<*a1, a2, a3*>) by
A1,
A2,
FINSEQ_2: 126
.= ((a1
'or' a2)
'or' a3) by
FACIRC_1:def 7;
end;
Lm2: for x,y,c be non
pair
set holds for s be
State of (
BorrowCirc (x,y,c)) holds for a1,a2,a3 be
Element of
BOOLEAN st a1
= (s
. x) & a2
= (s
. y) & a3
= (s
. c) holds ((
Following (s,2))
. (
BorrowOutput (x,y,c)))
= ((((
'not' a1)
'&' a2)
'or' (a2
'&' a3))
'or' ((
'not' a1)
'&' a3)) & ((
Following (s,2))
.
[
<*x, y*>,
and2a ])
= ((
'not' a1)
'&' a2) & ((
Following (s,2))
.
[
<*y, c*>,
and2 ])
= (a2
'&' a3) & ((
Following (s,2))
.
[
<*x, c*>,
and2a ])
= ((
'not' a1)
'&' a3)
proof
let x,y,c be non
pair
set;
set S = (
BorrowStr (x,y,c));
reconsider x9 = x, y9 = y, c9 = c as
Vertex of S by
Th6;
let s be
State of (
BorrowCirc (x,y,c));
set xy =
<*x, y*>, yc =
<*y, c*>, xc =
<*x, c*>;
set xy1 =
[xy,
and2a ], yc1 =
[yc,
and2 ], xc1 =
[xc,
and2a ];
A1: (
Following (s,2))
= (
Following (
Following s)) by
FACIRC_1: 15;
let a1,a2,a3 be
Element of
BOOLEAN such that
A2: a1
= (s
. x) & a2
= (s
. y) & a3
= (s
. c);
A3: ((
Following s)
. xc1)
= ((
'not' a1)
'&' a3) by
A2,
Lm1;
((
Following s)
. xy1)
= ((
'not' a1)
'&' a2) & ((
Following s)
. yc1)
= (a2
'&' a3) by
A2,
Lm1;
hence ((
Following (s,2))
. (
BorrowOutput (x,y,c)))
= ((((
'not' a1)
'&' a2)
'or' (a2
'&' a3))
'or' ((
'not' a1)
'&' a3)) by
A1,
A3,
Th13;
y
in (
InputVertices S) by
Th8;
then
A4: ((
Following s)
. y9)
= (s
. y) by
CIRCUIT2:def 5;
c
in (
InputVertices S) by
Th8;
then
A5: ((
Following s)
. c9)
= (s
. c) by
CIRCUIT2:def 5;
x
in (
InputVertices S) by
Th8;
then ((
Following s)
. x9)
= (s
. x) by
CIRCUIT2:def 5;
hence thesis by
A2,
A4,
A5,
A1,
Lm1;
end;
theorem ::
FSCIRC_1:14
for x,y,c be non
pair
set holds for s be
State of (
BorrowCirc (x,y,c)) holds for a1,a2 be
Element of
BOOLEAN st a1
= (s
. x) & a2
= (s
. y) holds ((
Following (s,2))
.
[
<*x, y*>,
and2a ])
= ((
'not' a1)
'&' a2)
proof
let x,y,c be non
pair
set;
reconsider a = c as
Vertex of (
BorrowStr (x,y,c)) by
Th6;
let s be
State of (
BorrowCirc (x,y,c));
(s
. a) is
Element of
BOOLEAN ;
hence thesis by
Lm2;
end;
theorem ::
FSCIRC_1:15
for x,y,c be non
pair
set holds for s be
State of (
BorrowCirc (x,y,c)) holds for a2,a3 be
Element of
BOOLEAN st a2
= (s
. y) & a3
= (s
. c) holds ((
Following (s,2))
.
[
<*y, c*>,
and2 ])
= (a2
'&' a3)
proof
let x,y,c be non
pair
set;
reconsider a = x as
Vertex of (
BorrowStr (x,y,c)) by
Th6;
let s be
State of (
BorrowCirc (x,y,c));
(s
. a) is
Element of
BOOLEAN ;
hence thesis by
Lm2;
end;
theorem ::
FSCIRC_1:16
for x,y,c be non
pair
set holds for s be
State of (
BorrowCirc (x,y,c)) holds for a1,a3 be
Element of
BOOLEAN st a1
= (s
. x) & a3
= (s
. c) holds ((
Following (s,2))
.
[
<*x, c*>,
and2a ])
= ((
'not' a1)
'&' a3)
proof
let x,y,c be non
pair
set;
reconsider a = y as
Vertex of (
BorrowStr (x,y,c)) by
Th6;
let s be
State of (
BorrowCirc (x,y,c));
(s
. a) is
Element of
BOOLEAN ;
hence thesis by
Lm2;
end;
theorem ::
FSCIRC_1:17
for x,y,c be non
pair
set holds for s be
State of (
BorrowCirc (x,y,c)) holds for a1,a2,a3 be
Element of
BOOLEAN st a1
= (s
. x) & a2
= (s
. y) & a3
= (s
. c) holds ((
Following (s,2))
. (
BorrowOutput (x,y,c)))
= ((((
'not' a1)
'&' a2)
'or' (a2
'&' a3))
'or' ((
'not' a1)
'&' a3)) by
Lm2;
theorem ::
FSCIRC_1:18
Th18: for x,y,c be non
pair
set holds for s be
State of (
BorrowCirc (x,y,c)) holds (
Following (s,2)) is
stable
proof
let x,y,c be non
pair
set;
set S = (
BorrowStr (x,y,c));
reconsider xx = x, yy = y, cc = c as
Vertex of S by
Th6;
let s be
State of (
BorrowCirc (x,y,c));
set a1 = (s
. xx), a2 = (s
. yy), a3 = (s
. cc);
set ffs = (
Following (s,2)), fffs = (
Following ffs);
A1: ffs
= (
Following (
Following s)) by
FACIRC_1: 15;
A2: y
in (
InputVertices S) by
Th8;
then ((
Following s)
. y)
= a2 by
CIRCUIT2:def 5;
then
A3: (ffs
. y)
= a2 by
A1,
A2,
CIRCUIT2:def 5;
a2
= (s
. y);
then
A4: (ffs
.
[
<*x, c*>,
and2a ])
= ((
'not' a1)
'&' a3) by
Lm2;
A5: x
in (
InputVertices S) by
Th8;
then ((
Following s)
. x)
= a1 by
CIRCUIT2:def 5;
then
A6: (ffs
. x)
= a1 by
A1,
A5,
CIRCUIT2:def 5;
a1
= (s
. x);
then
A7: (ffs
.
[
<*y, c*>,
and2 ])
= (a2
'&' a3) by
Lm2;
A8: c
in (
InputVertices S) by
Th8;
then ((
Following s)
. c)
= a3 by
CIRCUIT2:def 5;
then
A9: (ffs
. c)
= a3 by
A1,
A8,
CIRCUIT2:def 5;
a3
= (s
. c);
then
A10: (ffs
.
[
<*x, y*>,
and2a ])
= ((
'not' a1)
'&' a2) by
Lm2;
A11: (ffs
. (
BorrowOutput (x,y,c)))
= ((((
'not' a1)
'&' a2)
'or' (a2
'&' a3))
'or' ((
'not' a1)
'&' a3)) by
Lm2;
A12:
now
let a be
object;
assume
A13: a
in the
carrier of S;
then
reconsider v = a as
Vertex of S;
A14: v
in ((
InputVertices S)
\/ (
InnerVertices S)) by
A13,
XBOOLE_1: 45;
thus (ffs
. a)
= (fffs
. a)
proof
per cases by
A14,
XBOOLE_0:def 3;
suppose v
in (
InputVertices S);
hence thesis by
CIRCUIT2:def 5;
end;
suppose v
in (
InnerVertices S);
then v
in (
{
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ]}
\/
{(
BorrowOutput (x,y,c))}) by
Th9;
then v
in
{
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ]} or v
in
{(
BorrowOutput (x,y,c))} by
XBOOLE_0:def 3;
then v
=
[
<*x, y*>,
and2a ] or v
=
[
<*y, c*>,
and2 ] or v
=
[
<*x, c*>,
and2a ] or v
= (
BorrowOutput (x,y,c)) by
ENUMSET1:def 1,
TARSKI:def 1;
hence thesis by
A11,
A10,
A7,
A4,
A6,
A3,
A9,
Lm1,
Th13;
end;
end;
end;
(
dom (
Following (
Following (s,2))))
= the
carrier of S & (
dom (
Following (s,2)))
= the
carrier of S by
CIRCUIT1: 3;
hence ffs
= fffs by
A12,
FUNCT_1: 2;
end;
begin
definition
let x,y,c be
set;
::
FSCIRC_1:def8
func
BitSubtracterWithBorrowStr (x,y,c) ->
unsplit
gate`1=arity
gate`2isBoolean non
void
strict non
empty
ManySortedSign equals ((
2GatesCircStr (x,y,c,
'xor' ))
+* (
BorrowStr (x,y,c)));
coherence ;
end
theorem ::
FSCIRC_1:19
Th19: for x,y,c be non
pair
set holds (
InputVertices (
BitSubtracterWithBorrowStr (x,y,c)))
=
{x, y, c}
proof
let x,y,c be non
pair
set;
set S = (
BitSubtracterWithBorrowStr (x,y,c));
set S1 = (
2GatesCircStr (x,y,c,
'xor' )), S2 = (
BorrowStr (x,y,c));
A1: (
InputVertices S1)
=
{x, y, c} & (
InputVertices S2)
=
{x, y, c} by
Th9,
FACIRC_1: 57;
(
InnerVertices S1) is
Relation & (
InnerVertices S2) is
Relation by
Th1,
FACIRC_1: 58;
hence (
InputVertices S)
= (
{x, y, c}
\/
{x, y, c}) by
A1,
FACIRC_1: 7
.=
{x, y, c};
end;
theorem ::
FSCIRC_1:20
for x,y,c be non
pair
set holds (
InnerVertices (
BitSubtracterWithBorrowStr (x,y,c)))
= ((
{
[
<*x, y*>,
'xor' ], (
2GatesCircOutput (x,y,c,
'xor' ))}
\/
{
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ]})
\/
{(
BorrowOutput (x,y,c))})
proof
let x,y,c be non
pair
set;
set S1 = (
2GatesCircStr (x,y,c,
'xor' )), S2 = (
BorrowStr (x,y,c));
A1: ((
{
[
<*x, y*>,
'xor' ], (
2GatesCircOutput (x,y,c,
'xor' ))}
\/
{
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ]})
\/
{(
BorrowOutput (x,y,c))})
= (
{
[
<*x, y*>,
'xor' ], (
2GatesCircOutput (x,y,c,
'xor' ))}
\/ (
{
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ]}
\/
{(
BorrowOutput (x,y,c))})) & (
InnerVertices S1)
=
{
[
<*x, y*>,
'xor' ], (
2GatesCircOutput (x,y,c,
'xor' ))} by
FACIRC_1: 56,
XBOOLE_1: 4;
(
InnerVertices S2)
= (
{
[
<*x, y*>,
and2a ],
[
<*y, c*>,
and2 ],
[
<*x, c*>,
and2a ]}
\/
{(
BorrowOutput (x,y,c))}) by
Th9;
hence thesis by
A1,
FACIRC_1: 27;
end;
theorem ::
FSCIRC_1:21
for S be non
empty
ManySortedSign st S
= (
BitSubtracterWithBorrowStr (x,y,c)) holds x
in the
carrier of S & y
in the
carrier of S & c
in the
carrier of S
proof
set S1 = (
2GatesCircStr (x,y,c,
'xor' ));
let S be non
empty
ManySortedSign;
A1: x
in the
carrier of S1 & y
in the
carrier of S1 by
FACIRC_1: 60;
A2: c
in the
carrier of S1 by
FACIRC_1: 60;
assume S
= (
BitSubtracterWithBorrowStr (x,y,c));
hence thesis by
A1,
A2,
FACIRC_1: 20;
end;
definition
let x,y,c be
set;
::
FSCIRC_1:def9
func
BitSubtracterWithBorrowCirc (x,y,c) ->
strict
Boolean
gate`2=den
Circuit of (
BitSubtracterWithBorrowStr (x,y,c)) equals ((
BitSubtracterCirc (x,y,c))
+* (
BorrowCirc (x,y,c)));
coherence ;
end
theorem ::
FSCIRC_1:22
(
InnerVertices (
BitSubtracterWithBorrowStr (x,y,c))) is
Relation
proof
(
InnerVertices (
2GatesCircStr (x,y,c,
'xor' ))) is
Relation & (
InnerVertices (
BorrowStr (x,y,c))) is
Relation by
Th1,
FACIRC_1: 58;
hence thesis by
FACIRC_1: 3;
end;
theorem ::
FSCIRC_1:23
for x,y,c be non
pair
set holds (
InputVertices (
BitSubtracterWithBorrowStr (x,y,c))) is
without_pairs
proof
let x,y,c be non
pair
set;
(
InputVertices (
BitSubtracterWithBorrowStr (x,y,c)))
=
{x, y, c} by
Th19;
hence thesis;
end;
theorem ::
FSCIRC_1:24
for x,y,c be non
pair
set holds for s be
State of (
BitSubtracterWithBorrowCirc (x,y,c)) holds for a1,a2,a3 be
Element of
BOOLEAN st a1
= (s
. x) & a2
= (s
. y) & a3
= (s
. c) holds ((
Following (s,2))
. (
BitSubtracterOutput (x,y,c)))
= ((a1
'xor' a2)
'xor' a3) & ((
Following (s,2))
. (
BorrowOutput (x,y,c)))
= ((((
'not' a1)
'&' a2)
'or' (a2
'&' a3))
'or' ((
'not' a1)
'&' a3))
proof
set f =
'xor' ;
let x,y,c be non
pair
set;
set S1 = (
2GatesCircStr (x,y,c,
'xor' )), S2 = (
BorrowStr (x,y,c));
set A = (
BitSubtracterWithBorrowCirc (x,y,c));
set A1 = (
BitSubtracterCirc (x,y,c)), A2 = (
BorrowCirc (x,y,c));
let s be
State of A;
let a1,a2,a3 be
Element of
BOOLEAN ;
assume that
A1: a1
= (s
. x) and
A2: a2
= (s
. y) and
A3: a3
= (s
. c);
reconsider s1 = (s
| the
carrier of S1) as
State of A1 by
FACIRC_1: 26;
A4: (
dom s1)
= the
carrier of S1 by
CIRCUIT1: 3;
c
in the
carrier of S1 by
FACIRC_1: 60;
then
A5: a3
= (s1
. c) by
A3,
A4,
FUNCT_1: 47;
y
in the
carrier of S1 by
FACIRC_1: 60;
then
A6: a2
= (s1
. y) by
A2,
A4,
FUNCT_1: 47;
reconsider t = s as
State of (A1
+* A2);
(
InputVertices S1) is
without_pairs by
FACIRC_1: 59;
then (
InnerVertices S2)
misses (
InputVertices S1) by
Th1,
FACIRC_1: 5;
then
A7: ((
Following (t,2))
. (
2GatesCircOutput (x,y,c,f)))
= ((
Following (s1,2))
. (
2GatesCircOutput (x,y,c,f))) by
FACIRC_1: 32;
reconsider s2 = (s
| the
carrier of S2) as
State of A2 by
FACIRC_1: 26;
A8: (
dom s2)
= the
carrier of S2 by
CIRCUIT1: 3;
x
in the
carrier of S1 by
FACIRC_1: 60;
then a1
= (s1
. x) by
A1,
A4,
FUNCT_1: 47;
hence ((
Following (s,2))
. (
BitSubtracterOutput (x,y,c)))
= ((a1
'xor' a2)
'xor' a3) by
A6,
A5,
A7,
FACIRC_1: 64;
(
InputVertices S2) is
without_pairs by
Th2;
then (
InnerVertices S1)
misses (
InputVertices S2) by
FACIRC_1: 5,
FACIRC_1: 58;
then
A9: ((
Following (t,2))
. (
BorrowOutput (x,y,c)))
= ((
Following (s2,2))
. (
BorrowOutput (x,y,c))) by
FACIRC_1: 33;
c
in the
carrier of S2 by
Th6;
then
A10: a3
= (s2
. c) by
A3,
A8,
FUNCT_1: 47;
y
in the
carrier of S2 by
Th6;
then
A11: a2
= (s2
. y) by
A2,
A8,
FUNCT_1: 47;
x
in the
carrier of S2 by
Th6;
then a1
= (s2
. x) by
A1,
A8,
FUNCT_1: 47;
hence thesis by
A11,
A10,
A9,
Lm2;
end;
theorem ::
FSCIRC_1:25
for x,y,c be non
pair
set holds for s be
State of (
BitSubtracterWithBorrowCirc (x,y,c)) holds (
Following (s,2)) is
stable
proof
let x,y,c be non
pair
set;
set S = (
BitSubtracterWithBorrowStr (x,y,c));
set S1 = (
2GatesCircStr (x,y,c,
'xor' )), S2 = (
BorrowStr (x,y,c));
set A = (
BitSubtracterWithBorrowCirc (x,y,c));
set A1 = (
BitSubtracterCirc (x,y,c)), A2 = (
BorrowCirc (x,y,c));
let s be
State of A;
reconsider s1 = (s
| the
carrier of S1) as
State of A1 by
FACIRC_1: 26;
reconsider s2 = (s
| the
carrier of S2) as
State of A2 by
FACIRC_1: 26;
reconsider t = s as
State of (A1
+* A2);
A1: (
dom (
Following (s,3)))
= the
carrier of S by
CIRCUIT1: 3;
A2: the
carrier of S
= (the
carrier of S1
\/ the
carrier of S2) by
CIRCCOMB:def 2;
(
InputVertices S1) is
without_pairs by
FACIRC_1: 59;
then (
InnerVertices S2)
misses (
InputVertices S1) by
Th1,
FACIRC_1: 5;
then
A3: (
Following (s1,2))
= ((
Following (t,2))
| the
carrier of S1) & (
Following (s1,3))
= ((
Following (t,3))
| the
carrier of S1) by
FACIRC_1: 30;
(
Following (s1,2)) is
stable by
FACIRC_1: 63;
then
A4: (
Following (s1,2))
= (
Following (
Following (s1,2)))
.= (
Following (s1,(2
+ 1))) by
FACIRC_1: 12;
(
InputVertices S2) is
without_pairs by
Th2;
then (
InnerVertices S1)
misses (
InputVertices S2) by
FACIRC_1: 5,
FACIRC_1: 58;
then
A5: (
Following (s2,2))
= ((
Following (t,2))
| the
carrier of S2) & (
Following (s2,3))
= ((
Following (t,3))
| the
carrier of S2) by
FACIRC_1: 31;
(
Following (s2,2)) is
stable by
Th18;
then
A6: (
Following (s2,2))
= (
Following (
Following (s2,2)))
.= (
Following (s2,(2
+ 1))) by
FACIRC_1: 12;
A7: (
dom (
Following (s1,2)))
= the
carrier of S1 & (
dom (
Following (s2,2)))
= the
carrier of S2 by
CIRCUIT1: 3;
A8:
now
let a be
object;
assume a
in the
carrier of S;
then a
in the
carrier of S1 or a
in the
carrier of S2 by
A2,
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
A3,
A5,
A4,
A6,
A7,
FUNCT_1: 47;
hence ((
Following (s,2))
. a)
= ((
Following (
Following (s,2)))
. a) by
A4,
A6,
FACIRC_1: 12;
end;
(
Following (s,(2
+ 1)))
= (
Following (
Following (s,2))) & (
dom (
Following (s,2)))
= the
carrier of S by
CIRCUIT1: 3,
FACIRC_1: 12;
hence (
Following (s,2))
= (
Following (
Following (s,2))) by
A1,
A8,
FUNCT_1: 2;
end;