let G be _finite natural-weighted WGraph; for EL being FF:ELabeling of G
for source, sink being set
for P being Path of G st source <> sink & EL has_valid_flow_from source,sink & P is_Walk_from source,sink & P is_augmenting_wrt EL holds
FF:PushFlow (EL,P) has_valid_flow_from source,sink
let EL be FF:ELabeling of G; for source, sink being set
for P being Path of G st source <> sink & EL has_valid_flow_from source,sink & P is_Walk_from source,sink & P is_augmenting_wrt EL holds
FF:PushFlow (EL,P) has_valid_flow_from source,sink
let source, sink be set ; for P being Path of G st source <> sink & EL has_valid_flow_from source,sink & P is_Walk_from source,sink & P is_augmenting_wrt EL holds
FF:PushFlow (EL,P) has_valid_flow_from source,sink
let P be Path of G; ( source <> sink & EL has_valid_flow_from source,sink & P is_Walk_from source,sink & P is_augmenting_wrt EL implies FF:PushFlow (EL,P) has_valid_flow_from source,sink )
assume that
A1:
source <> sink
and
A2:
EL has_valid_flow_from source,sink
and
A3:
P is_Walk_from source,sink
and
A4:
P is_augmenting_wrt EL
; FF:PushFlow (EL,P) has_valid_flow_from source,sink
set EL2 = FF:PushFlow (EL,P);
now ( source is Vertex of G & sink is Vertex of G & ( for e being set st e in the_Edges_of G holds
( 0 <= (FF:PushFlow (EL,P)) . e & (FF:PushFlow (EL,P)) . e <= (the_Weight_of G) . e ) ) & ( for v being Vertex of G st v <> source & v <> sink holds
Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut())) ) )thus
(
source is
Vertex of
G &
sink is
Vertex of
G )
by A2;
( ( for e being set st e in the_Edges_of G holds
( 0 <= (FF:PushFlow (EL,P)) . e & (FF:PushFlow (EL,P)) . e <= (the_Weight_of G) . e ) ) & ( for v being Vertex of G st v <> source & v <> sink holds
Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut())) ) )now for e being set st e in the_Edges_of G holds
( 0 <= (FF:PushFlow (EL,P)) . e & (FF:PushFlow (EL,P)) . e <= (the_Weight_of G) . e )let e be
set ;
( e in the_Edges_of G implies ( 0 <= (FF:PushFlow (EL,P)) . e & (FF:PushFlow (EL,P)) . e <= (the_Weight_of G) . e ) )assume A5:
e in the_Edges_of G
;
( 0 <= (FF:PushFlow (EL,P)) . e & (FF:PushFlow (EL,P)) . e <= (the_Weight_of G) . e )then A6:
EL . e <= (the_Weight_of G) . e
by A2;
now ( 0 <= (FF:PushFlow (EL,P)) . e & (FF:PushFlow (EL,P)) . e <= (the_Weight_of G) . e )per cases
( not e in P .edges() or e in P .edges() )
;
suppose
e in P .edges()
;
( 0 <= (FF:PushFlow (EL,P)) . e & (FF:PushFlow (EL,P)) . e <= (the_Weight_of G) . e )then consider n being
odd Element of
NAT such that A7:
n < len P
and A8:
P . (n + 1) = e
by GLIB_001:100;
set PFS =
P .flowSeq EL;
set n1div2 =
(n + 1) div 2;
A9:
1
<= n + 1
by NAT_1:11;
n + 1
<= len P
by A7, NAT_1:13;
then
(n + 1) div 2
in dom (P .edgeSeq())
by A9, GLIB_001:77;
then A10:
(n + 1) div 2
in dom (P .flowSeq EL)
by A4, Def15;
A11:
now ( e DJoins P . n,P . (n + 2),G implies not e DJoins P . (n + 2),P . n,G )A12:
n + 0 < n + 2
by XREAL_1:8;
assume that A13:
e DJoins P . n,
P . (n + 2),
G
and A14:
e DJoins P . (n + 2),
P . n,
G
;
contradictionA15:
(the_Source_of G) . e = P . n
by A13;
A16:
(the_Source_of G) . e = P . (n + 2)
by A14;
A17:
n + 2
<= len P
by A7, GLIB_001:1;
then
n = 1
by A15, A16, A12, GLIB_001:def 28;
then A18:
P . n = source
by A3, GLIB_001:17;
n + 2
= len P
by A15, A16, A12, A17, GLIB_001:def 28;
hence
contradiction
by A1, A3, A15, A16, A18, GLIB_001:17;
verum end; A19:
P .last() = sink
by A3, GLIB_001:def 23;
P .first() = source
by A3, GLIB_001:def 23;
then A20:
P is
trivial
by A1, A19, GLIB_001:127;
2
divides n + 1
by PEPIN:22;
then A21:
2
* ((n + 1) div 2) = n + 1
by NAT_D:3;
then A22:
(2 * ((n + 1) div 2)) - 1
= n
;
A23:
(2 * ((n + 1) div 2)) + 1
= n + 2
by A21;
A24:
e Joins P . n,
P . (n + 2),
G
by A7, A8, GLIB_001:def 3;
now ( 0 <= (FF:PushFlow (EL,P)) . e & (FF:PushFlow (EL,P)) . e <= (the_Weight_of G) . e )per cases
( e DJoins P . n,P . (n + 2),G or e DJoins P . (n + 2),P . n,G )
by A24;
suppose A25:
e DJoins P . n,
P . (n + 2),
G
;
( 0 <= (FF:PushFlow (EL,P)) . e & (FF:PushFlow (EL,P)) . e <= (the_Weight_of G) . e )then
(P .flowSeq EL) . ((n + 1) div 2) = ((the_Weight_of G) . e) - (EL . e)
by A4, A8, A10, A22, A23, Def15;
then
((the_Weight_of G) . e) - (EL . e) in rng (P .flowSeq EL)
by A10, FUNCT_1:def 3;
then A26:
P .tolerance EL <= ((the_Weight_of G) . e) - (EL . e)
by A4, A20, Def16;
thus
0 <= (FF:PushFlow (EL,P)) . e
;
(FF:PushFlow (EL,P)) . e <= (the_Weight_of G) . e
(EL . e) + (P .tolerance EL) = (FF:PushFlow (EL,P)) . e
by A4, A7, A8, A25, Def17;
then
(FF:PushFlow (EL,P)) . e <= (((the_Weight_of G) . e) - (EL . e)) + (EL . e)
by A26, XREAL_1:7;
hence
(FF:PushFlow (EL,P)) . e <= (the_Weight_of G) . e
;
verum end; suppose A27:
e DJoins P . (n + 2),
P . n,
G
;
( 0 <= (FF:PushFlow (EL,P)) . e & (FF:PushFlow (EL,P)) . e <= (the_Weight_of G) . e )thus
0 <= (FF:PushFlow (EL,P)) . e
;
(FF:PushFlow (EL,P)) . e <= (the_Weight_of G) . e
(FF:PushFlow (EL,P)) . e = (EL . e) - (P .tolerance EL)
by A4, A7, A8, A11, A27, Def17;
then
(FF:PushFlow (EL,P)) . e <= (EL . e) - 0
by XREAL_1:13;
hence
(FF:PushFlow (EL,P)) . e <= (the_Weight_of G) . e
by A6, XXREAL_0:2;
verum end; end; end; hence
(
0 <= (FF:PushFlow (EL,P)) . e &
(FF:PushFlow (EL,P)) . e <= (the_Weight_of G) . e )
;
verum end; end; end; hence
(
0 <= (FF:PushFlow (EL,P)) . e &
(FF:PushFlow (EL,P)) . e <= (the_Weight_of G) . e )
;
verum end; hence
for
e being
set st
e in the_Edges_of G holds
(
0 <= (FF:PushFlow (EL,P)) . e &
(FF:PushFlow (EL,P)) . e <= (the_Weight_of G) . e )
;
for v being Vertex of G st v <> source & v <> sink holds
Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut()))let v be
Vertex of
G;
( v <> source & v <> sink implies Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut())) )assume that A28:
v <> source
and A29:
v <> sink
;
Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut()))A30:
Sum (EL | (v .edgesIn())) = Sum (EL | (v .edgesOut()))
by A2, A28, A29;
now Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut()))per cases
( v in P .vertices() or not v in P .vertices() )
;
suppose
v in P .vertices()
;
Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut()))then consider n being
odd Element of
NAT such that A31:
n <= len P
and A32:
P . n = v
by GLIB_001:87;
then A34:
n < len P
by A31, XXREAL_0:1;
A36:
now not v = P . (n + 2)end;
1
<= n
by ABIAN:12;
then
1
< n
by A35, XXREAL_0:1;
then
1
+ 1
<= n
by NAT_1:13;
then reconsider n2 =
n - (2 * 1) as
odd Element of
NAT by INT_1:5;
set e1 =
P . (n2 + 1);
set e2 =
P . (n + 1);
set T =
P .tolerance EL;
A39:
1
<= n2 + 1
by NAT_1:11;
A40:
P . (n2 + 2) = v
by A32;
n2 < n - 0
by XREAL_1:15;
then A59:
n2 + 1
< n + 1
by XREAL_1:8;
n + 1
<= len P
by A34, NAT_1:13;
then A60:
P . (n2 + 1) <> P . (n + 1)
by A39, A59, GLIB_001:138;
A62:
( not
P . (n2 + 1) DJoins P . n2,
v,
G or not
P . (n2 + 1) DJoins v,
P . n2,
G )
by A61;
A63:
n2 < (len P) - 0
by A31, XREAL_1:15;
then A64:
P . (n2 + 1) Joins P . n2,
P . (n2 + 2),
G
by GLIB_001:def 3;
A65:
P . (n + 1) Joins v,
P . (n + 2),
G
by A32, A34, GLIB_001:def 3;
now Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut()))per cases
( ( P . (n2 + 1) DJoins P . n2,v,G & P . (n + 1) DJoins v,P . (n + 2),G ) or ( P . (n2 + 1) DJoins P . n2,v,G & P . (n + 1) DJoins P . (n + 2),v,G ) or ( P . (n2 + 1) DJoins v,P . n2,G & P . (n + 1) DJoins v,P . (n + 2),G ) or ( P . (n2 + 1) DJoins v,P . n2,G & P . (n + 1) DJoins P . (n + 2),v,G ) )
by A32, A64, A65;
suppose A66:
(
P . (n2 + 1) DJoins P . n2,
v,
G &
P . (n + 1) DJoins v,
P . (n + 2),
G )
;
Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut()))set XIN =
(EL | (v .edgesIn())) +* ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) + (P .tolerance EL)));
A67:
P . (n2 + 1) in v .edgesIn()
by A66, GLIB_000:57;
dom ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) + (P .tolerance EL))) = {(P . (n2 + 1))}
;
then A69:
dom ((EL | (v .edgesIn())) +* ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) + (P .tolerance EL)))) =
(dom (EL | (v .edgesIn()))) \/ {(P . (n2 + 1))}
by FUNCT_4:def 1
.=
(v .edgesIn()) \/ {(P . (n2 + 1))}
by PARTFUN1:def 2
.=
v .edgesIn()
by A67, ZFMISC_1:40
;
then reconsider XIN =
(EL | (v .edgesIn())) +* ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) + (P .tolerance EL))) as
Rbag of
v .edgesIn() by PARTFUN1:def 2, RELAT_1:def 18;
dom ((FF:PushFlow (EL,P)) | (v .edgesIn())) = v .edgesIn()
by PARTFUN1:def 2;
then A87:
Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum XIN
by A69, A70, FUNCT_1:2;
A88:
dom ((FF:PushFlow (EL,P)) | (v .edgesOut())) = v .edgesOut()
by PARTFUN1:def 2;
set XOUT =
(EL | (v .edgesOut())) +* ((P . (n + 1)) .--> ((EL . (P . (n + 1))) + (P .tolerance EL)));
A89:
P . (n + 1) in v .edgesOut()
by A66, GLIB_000:59;
dom ((P . (n + 1)) .--> ((EL . (P . (n + 1))) + (P .tolerance EL))) = {(P . (n + 1))}
;
then A91:
dom ((EL | (v .edgesOut())) +* ((P . (n + 1)) .--> ((EL . (P . (n + 1))) + (P .tolerance EL)))) =
(dom (EL | (v .edgesOut()))) \/ {(P . (n + 1))}
by FUNCT_4:def 1
.=
(v .edgesOut()) \/ {(P . (n + 1))}
by PARTFUN1:def 2
.=
v .edgesOut()
by A89, ZFMISC_1:40
;
then reconsider XOUT =
(EL | (v .edgesOut())) +* ((P . (n + 1)) .--> ((EL . (P . (n + 1))) + (P .tolerance EL))) as
Rbag of
v .edgesOut() by PARTFUN1:def 2, RELAT_1:def 18;
Sum XIN =
((Sum (EL | (v .edgesIn()))) + ((P .tolerance EL) + (EL . (P . (n2 + 1))))) - ((EL | (v .edgesIn())) . (P . (n2 + 1)))
by GLIB_004:9
.=
(((Sum (EL | (v .edgesOut()))) + (P .tolerance EL)) + (EL . (P . (n2 + 1)))) - (EL . (P . (n2 + 1)))
by A30, A67, FUNCT_1:49
.=
(((Sum (EL | (v .edgesOut()))) + (P .tolerance EL)) + (EL . (P . (n + 1)))) - (EL . (P . (n + 1)))
.=
((Sum (EL | (v .edgesOut()))) + ((P .tolerance EL) + (EL . (P . (n + 1))))) - ((EL | (v .edgesOut())) . (P . (n + 1)))
by A89, FUNCT_1:49
.=
Sum XOUT
by GLIB_004:9
;
hence
Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut()))
by A91, A87, A88, A92, FUNCT_1:2;
verum end; suppose A108:
(
P . (n2 + 1) DJoins P . n2,
v,
G &
P . (n + 1) DJoins P . (n + 2),
v,
G )
;
Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut()))A109:
dom ((FF:PushFlow (EL,P)) | (v .edgesOut())) = v .edgesOut()
by PARTFUN1:def 2;
A110:
now for e being object st e in dom ((FF:PushFlow (EL,P)) | (v .edgesOut())) holds
((FF:PushFlow (EL,P)) | (v .edgesOut())) . e = (EL | (v .edgesOut())) . elet e be
object ;
( e in dom ((FF:PushFlow (EL,P)) | (v .edgesOut())) implies ((FF:PushFlow (EL,P)) | (v .edgesOut())) . e = (EL | (v .edgesOut())) . e )assume A111:
e in dom ((FF:PushFlow (EL,P)) | (v .edgesOut()))
;
((FF:PushFlow (EL,P)) | (v .edgesOut())) . e = (EL | (v .edgesOut())) . ethen A112:
(EL | (v .edgesOut())) . e = EL . e
by FUNCT_1:49;
A113:
e in v .edgesOut()
by A111;
then A114:
(the_Source_of G) . e = v
by GLIB_000:58;
then A115:
e <> P . (n + 1)
by A36, A108;
e <> P . (n2 + 1)
by A61, A108, A114;
then A116:
not
e in P .edges()
by A41, A113, A115;
((FF:PushFlow (EL,P)) | (v .edgesOut())) . e = (FF:PushFlow (EL,P)) . e
by A111, FUNCT_1:49;
hence
((FF:PushFlow (EL,P)) | (v .edgesOut())) . e = (EL | (v .edgesOut())) . e
by A4, A113, A112, A116, Def17;
verum end;
dom (EL | (v .edgesOut())) = v .edgesOut()
by PARTFUN1:def 2;
then A117:
(FF:PushFlow (EL,P)) | (v .edgesOut()) = EL | (v .edgesOut())
by A109, A110, FUNCT_1:2;
set XIN1 =
(EL | (v .edgesIn())) +* ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) + (P .tolerance EL)));
set XIN2 =
((EL | (v .edgesIn())) +* ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) + (P .tolerance EL)))) +* ((P . (n + 1)) .--> ((EL . (P . (n + 1))) - (P .tolerance EL)));
A118:
dom ((FF:PushFlow (EL,P)) | (v .edgesIn())) = v .edgesIn()
by PARTFUN1:def 2;
A119:
P . (n + 1) in v .edgesIn()
by A108, GLIB_000:57;
A120:
P . (n2 + 1) in v .edgesIn()
by A108, GLIB_000:57;
A121:
(FF:PushFlow (EL,P)) . (P . (n2 + 1)) = (EL . (P . (n2 + 1))) + (P .tolerance EL)
by A4, A63, A40, A108, Def17;
A123:
dom ((EL | (v .edgesIn())) +* ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) + (P .tolerance EL)))) =
(dom (EL | (v .edgesIn()))) \/ (dom ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) + (P .tolerance EL))))
by FUNCT_4:def 1
.=
(dom (EL | (v .edgesIn()))) \/ {(P . (n2 + 1))}
.=
(v .edgesIn()) \/ {(P . (n2 + 1))}
by PARTFUN1:def 2
.=
v .edgesIn()
by A120, ZFMISC_1:40
;
then reconsider XIN1 =
(EL | (v .edgesIn())) +* ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) + (P .tolerance EL))) as
Rbag of
v .edgesIn() by PARTFUN1:def 2, RELAT_1:def 18;
A124:
dom (((EL | (v .edgesIn())) +* ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) + (P .tolerance EL)))) +* ((P . (n + 1)) .--> ((EL . (P . (n + 1))) - (P .tolerance EL)))) =
(dom XIN1) \/ (dom ((P . (n + 1)) .--> ((EL . (P . (n + 1))) - (P .tolerance EL))))
by FUNCT_4:def 1
.=
(v .edgesIn()) \/ {(P . (n + 1))}
by A123
.=
v .edgesIn()
by A119, ZFMISC_1:40
;
then reconsider XIN2 =
((EL | (v .edgesIn())) +* ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) + (P .tolerance EL)))) +* ((P . (n + 1)) .--> ((EL . (P . (n + 1))) - (P .tolerance EL))) as
Rbag of
v .edgesIn() by PARTFUN1:def 2, RELAT_1:def 18;
A126:
(FF:PushFlow (EL,P)) . (P . (n + 1)) = (EL . (P . (n + 1))) - (P .tolerance EL)
by A4, A32, A34, A54, A108, Def17;
A127:
now for e being object st e in dom ((FF:PushFlow (EL,P)) | (v .edgesIn())) holds
((FF:PushFlow (EL,P)) | (v .edgesIn())) . e = XIN2 . elet e be
object ;
( e in dom ((FF:PushFlow (EL,P)) | (v .edgesIn())) implies ((FF:PushFlow (EL,P)) | (v .edgesIn())) . e = XIN2 . e )assume A128:
e in dom ((FF:PushFlow (EL,P)) | (v .edgesIn()))
;
((FF:PushFlow (EL,P)) | (v .edgesIn())) . e = XIN2 . ethen A129:
e in v .edgesIn()
;
A130:
((FF:PushFlow (EL,P)) | (v .edgesIn())) . e = (FF:PushFlow (EL,P)) . e
by A128, FUNCT_1:49;
now ((FF:PushFlow (EL,P)) | (v .edgesIn())) . e = XIN2 . eper cases
( e = P . (n2 + 1) or e = P . (n + 1) or ( e <> P . (n2 + 1) & e <> P . (n + 1) ) )
;
suppose A134:
(
e <> P . (n2 + 1) &
e <> P . (n + 1) )
;
((FF:PushFlow (EL,P)) | (v .edgesIn())) . e = XIN2 . ethen A135:
not
e in dom ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) + (P .tolerance EL)))
by TARSKI:def 1;
A136:
not
e in P .edges()
by A41, A129, A134;
not
e in dom ((P . (n + 1)) .--> ((EL . (P . (n + 1))) - (P .tolerance EL)))
by A134, TARSKI:def 1;
then XIN2 . e =
XIN1 . e
by FUNCT_4:11
.=
(EL | (v .edgesIn())) . e
by A135, FUNCT_4:11
.=
EL . e
by A129, FUNCT_1:49
;
hence
((FF:PushFlow (EL,P)) | (v .edgesIn())) . e = XIN2 . e
by A4, A129, A130, A136, Def17;
verum end; end; end; hence
((FF:PushFlow (EL,P)) | (v .edgesIn())) . e = XIN2 . e
;
verum end;
not
P . (n + 1) in dom ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) + (P .tolerance EL)))
by A60, TARSKI:def 1;
then XIN1 . (P . (n + 1)) =
(EL | (v .edgesIn())) . (P . (n + 1))
by FUNCT_4:11
.=
EL . (P . (n + 1))
by A119, FUNCT_1:49
;
then Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) =
((Sum XIN1) + ((EL . (P . (n + 1))) - (P .tolerance EL))) - (EL . (P . (n + 1)))
by A124, A118, A127, FUNCT_1:2, GLIB_004:9
.=
(Sum XIN1) - ((EL . (P . (n + 1))) - ((EL . (P . (n + 1))) - (P .tolerance EL)))
.=
(((Sum (EL | (v .edgesIn()))) + ((EL . (P . (n2 + 1))) + (P .tolerance EL))) - ((EL | (v .edgesIn())) . (P . (n2 + 1)))) - (P .tolerance EL)
by GLIB_004:9
.=
((((Sum (EL | (v .edgesIn()))) + (P .tolerance EL)) + (EL . (P . (n2 + 1)))) - (EL . (P . (n2 + 1)))) - (P .tolerance EL)
by A120, FUNCT_1:49
.=
Sum (EL | (v .edgesIn()))
;
hence
Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut()))
by A2, A28, A29, A117;
verum end; suppose A137:
(
P . (n2 + 1) DJoins v,
P . n2,
G &
P . (n + 1) DJoins v,
P . (n + 2),
G )
;
Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut()))A138:
dom ((FF:PushFlow (EL,P)) | (v .edgesIn())) = v .edgesIn()
by PARTFUN1:def 2;
A139:
now for e being object st e in dom ((FF:PushFlow (EL,P)) | (v .edgesIn())) holds
((FF:PushFlow (EL,P)) | (v .edgesIn())) . e = (EL | (v .edgesIn())) . elet e be
object ;
( e in dom ((FF:PushFlow (EL,P)) | (v .edgesIn())) implies ((FF:PushFlow (EL,P)) | (v .edgesIn())) . e = (EL | (v .edgesIn())) . e )assume A140:
e in dom ((FF:PushFlow (EL,P)) | (v .edgesIn()))
;
((FF:PushFlow (EL,P)) | (v .edgesIn())) . e = (EL | (v .edgesIn())) . ethen A141:
(EL | (v .edgesIn())) . e = EL . e
by FUNCT_1:49;
A142:
e in v .edgesIn()
by A140;
then A143:
(the_Target_of G) . e = v
by GLIB_000:56;
then A144:
e <> P . (n + 1)
by A36, A137;
e <> P . (n2 + 1)
by A61, A137, A143;
then A145:
not
e in P .edges()
by A41, A142, A144;
((FF:PushFlow (EL,P)) | (v .edgesIn())) . e = (FF:PushFlow (EL,P)) . e
by A140, FUNCT_1:49;
hence
((FF:PushFlow (EL,P)) | (v .edgesIn())) . e = (EL | (v .edgesIn())) . e
by A4, A142, A141, A145, Def17;
verum end; set XOUT1 =
(EL | (v .edgesOut())) +* ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) - (P .tolerance EL)));
set XOUT2 =
((EL | (v .edgesOut())) +* ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) - (P .tolerance EL)))) +* ((P . (n + 1)) .--> ((EL . (P . (n + 1))) + (P .tolerance EL)));
A146:
dom ((FF:PushFlow (EL,P)) | (v .edgesOut())) = v .edgesOut()
by PARTFUN1:def 2;
A147:
P . (n + 1) in v .edgesOut()
by A137, GLIB_000:59;
A148:
dom (EL | (v .edgesIn())) = v .edgesIn()
by PARTFUN1:def 2;
A149:
P . (n2 + 1) in v .edgesOut()
by A137, GLIB_000:59;
A150:
(FF:PushFlow (EL,P)) . (P . (n + 1)) = (EL . (P . (n + 1))) + (P .tolerance EL)
by A4, A32, A34, A137, Def17;
A152:
dom ((EL | (v .edgesOut())) +* ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) - (P .tolerance EL)))) =
(dom (EL | (v .edgesOut()))) \/ (dom ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) - (P .tolerance EL))))
by FUNCT_4:def 1
.=
(dom (EL | (v .edgesOut()))) \/ {(P . (n2 + 1))}
.=
(v .edgesOut()) \/ {(P . (n2 + 1))}
by PARTFUN1:def 2
.=
v .edgesOut()
by A149, ZFMISC_1:40
;
then reconsider XOUT1 =
(EL | (v .edgesOut())) +* ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) - (P .tolerance EL))) as
Rbag of
v .edgesOut() by PARTFUN1:def 2, RELAT_1:def 18;
A153:
dom (((EL | (v .edgesOut())) +* ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) - (P .tolerance EL)))) +* ((P . (n + 1)) .--> ((EL . (P . (n + 1))) + (P .tolerance EL)))) =
(dom XOUT1) \/ (dom ((P . (n + 1)) .--> ((EL . (P . (n + 1))) + (P .tolerance EL))))
by FUNCT_4:def 1
.=
(v .edgesOut()) \/ {(P . (n + 1))}
by A152
.=
v .edgesOut()
by A147, ZFMISC_1:40
;
then reconsider XOUT2 =
((EL | (v .edgesOut())) +* ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) - (P .tolerance EL)))) +* ((P . (n + 1)) .--> ((EL . (P . (n + 1))) + (P .tolerance EL))) as
Rbag of
v .edgesOut() by PARTFUN1:def 2, RELAT_1:def 18;
A155:
(FF:PushFlow (EL,P)) . (P . (n2 + 1)) = (EL . (P . (n2 + 1))) - (P .tolerance EL)
by A4, A63, A40, A62, A137, Def17;
A156:
now for e being object st e in dom ((FF:PushFlow (EL,P)) | (v .edgesOut())) holds
((FF:PushFlow (EL,P)) | (v .edgesOut())) . e = XOUT2 . elet e be
object ;
( e in dom ((FF:PushFlow (EL,P)) | (v .edgesOut())) implies ((FF:PushFlow (EL,P)) | (v .edgesOut())) . e = XOUT2 . e )assume A157:
e in dom ((FF:PushFlow (EL,P)) | (v .edgesOut()))
;
((FF:PushFlow (EL,P)) | (v .edgesOut())) . e = XOUT2 . ethen A158:
e in v .edgesOut()
;
A159:
((FF:PushFlow (EL,P)) | (v .edgesOut())) . e = (FF:PushFlow (EL,P)) . e
by A157, FUNCT_1:49;
now ((FF:PushFlow (EL,P)) | (v .edgesOut())) . e = XOUT2 . eper cases
( e = P . (n2 + 1) or e = P . (n + 1) or ( e <> P . (n2 + 1) & e <> P . (n + 1) ) )
;
suppose A163:
(
e <> P . (n2 + 1) &
e <> P . (n + 1) )
;
((FF:PushFlow (EL,P)) | (v .edgesOut())) . e = XOUT2 . ethen A164:
not
e in dom ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) - (P .tolerance EL)))
by TARSKI:def 1;
A165:
not
e in P .edges()
by A41, A158, A163;
not
e in dom ((P . (n + 1)) .--> ((EL . (P . (n + 1))) + (P .tolerance EL)))
by A163, TARSKI:def 1;
then XOUT2 . e =
XOUT1 . e
by FUNCT_4:11
.=
(EL | (v .edgesOut())) . e
by A164, FUNCT_4:11
.=
EL . e
by A158, FUNCT_1:49
;
hence
((FF:PushFlow (EL,P)) | (v .edgesOut())) . e = XOUT2 . e
by A4, A158, A159, A165, Def17;
verum end; end; end; hence
((FF:PushFlow (EL,P)) | (v .edgesOut())) . e = XOUT2 . e
;
verum end;
not
P . (n + 1) in dom ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) - (P .tolerance EL)))
by A60, TARSKI:def 1;
then XOUT1 . (P . (n + 1)) =
(EL | (v .edgesOut())) . (P . (n + 1))
by FUNCT_4:11
.=
EL . (P . (n + 1))
by A147, FUNCT_1:49
;
then Sum ((FF:PushFlow (EL,P)) | (v .edgesOut())) =
((Sum XOUT1) + ((EL . (P . (n + 1))) + (P .tolerance EL))) - (EL . (P . (n + 1)))
by A153, A146, A156, FUNCT_1:2, GLIB_004:9
.=
(((Sum XOUT1) - (EL . (P . (n + 1)))) + (EL . (P . (n + 1)))) + (P .tolerance EL)
.=
(((Sum (EL | (v .edgesOut()))) + ((EL . (P . (n2 + 1))) - (P .tolerance EL))) - ((EL | (v .edgesOut())) . (P . (n2 + 1)))) + (P .tolerance EL)
by GLIB_004:9
.=
((((Sum (EL | (v .edgesOut()))) + (EL . (P . (n2 + 1)))) - (P .tolerance EL)) - (EL . (P . (n2 + 1)))) + (P .tolerance EL)
by A149, FUNCT_1:49
.=
Sum (EL | (v .edgesOut()))
;
hence
Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut()))
by A30, A138, A148, A139, FUNCT_1:2;
verum end; suppose A166:
(
P . (n2 + 1) DJoins v,
P . n2,
G &
P . (n + 1) DJoins P . (n + 2),
v,
G )
;
Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut()))set XIN =
(EL | (v .edgesIn())) +* ((P . (n + 1)) .--> ((EL . (P . (n + 1))) - (P .tolerance EL)));
A167:
P . (n + 1) in v .edgesIn()
by A166, GLIB_000:57;
dom ((P . (n + 1)) .--> ((EL . (P . (n + 1))) - (P .tolerance EL))) = {(P . (n + 1))}
;
then A169:
dom ((EL | (v .edgesIn())) +* ((P . (n + 1)) .--> ((EL . (P . (n + 1))) - (P .tolerance EL)))) =
(dom (EL | (v .edgesIn()))) \/ {(P . (n + 1))}
by FUNCT_4:def 1
.=
(v .edgesIn()) \/ {(P . (n + 1))}
by PARTFUN1:def 2
.=
v .edgesIn()
by A167, ZFMISC_1:40
;
then reconsider XIN =
(EL | (v .edgesIn())) +* ((P . (n + 1)) .--> ((EL . (P . (n + 1))) - (P .tolerance EL))) as
Rbag of
v .edgesIn() by PARTFUN1:def 2, RELAT_1:def 18;
A170:
(FF:PushFlow (EL,P)) . (P . (n + 1)) = (EL . (P . (n + 1))) - (P .tolerance EL)
by A4, A32, A34, A54, A166, Def17;
dom ((FF:PushFlow (EL,P)) | (v .edgesIn())) = v .edgesIn()
by PARTFUN1:def 2;
then A177:
Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) =
((Sum (EL | (v .edgesIn()))) + ((EL . (P . (n + 1))) - (P .tolerance EL))) - ((EL | (v .edgesIn())) . (P . (n + 1)))
by A169, A171, FUNCT_1:2, GLIB_004:9
.=
(((Sum (EL | (v .edgesIn()))) + (EL . (P . (n + 1)))) - (P .tolerance EL)) - (EL . (P . (n + 1)))
by A167, FUNCT_1:49
.=
(Sum (EL | (v .edgesIn()))) - (P .tolerance EL)
;
set XOUT =
(EL | (v .edgesOut())) +* ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) - (P .tolerance EL)));
A178:
P . (n2 + 1) in v .edgesOut()
by A166, GLIB_000:59;
dom ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) - (P .tolerance EL))) = {(P . (n2 + 1))}
;
then A180:
dom ((EL | (v .edgesOut())) +* ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) - (P .tolerance EL)))) =
(dom (EL | (v .edgesOut()))) \/ {(P . (n2 + 1))}
by FUNCT_4:def 1
.=
(v .edgesOut()) \/ {(P . (n2 + 1))}
by PARTFUN1:def 2
.=
v .edgesOut()
by A178, ZFMISC_1:40
;
then reconsider XOUT =
(EL | (v .edgesOut())) +* ((P . (n2 + 1)) .--> ((EL . (P . (n2 + 1))) - (P .tolerance EL))) as
Rbag of
v .edgesOut() by PARTFUN1:def 2, RELAT_1:def 18;
A181:
(FF:PushFlow (EL,P)) . (P . (n2 + 1)) = (EL . (P . (n2 + 1))) - (P .tolerance EL)
by A4, A63, A40, A62, A166, Def17;
dom ((FF:PushFlow (EL,P)) | (v .edgesOut())) = v .edgesOut()
by PARTFUN1:def 2;
then Sum ((FF:PushFlow (EL,P)) | (v .edgesOut())) =
((Sum (EL | (v .edgesOut()))) + ((EL . (P . (n2 + 1))) - (P .tolerance EL))) - ((EL | (v .edgesOut())) . (P . (n2 + 1)))
by A180, A182, FUNCT_1:2, GLIB_004:9
.=
(((Sum (EL | (v .edgesOut()))) + (EL . (P . (n2 + 1)))) - (P .tolerance EL)) - (EL . (P . (n2 + 1)))
by A178, FUNCT_1:49
.=
(Sum (EL | (v .edgesIn()))) - (P .tolerance EL)
by A30
;
hence
Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut()))
by A177;
verum end; end; end; hence
Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut()))
;
verum end; suppose A188:
not
v in P .vertices()
;
Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut()))A189:
dom (EL | (v .edgesOut())) = v .edgesOut()
by PARTFUN1:def 2;
A190:
now for e being object st e in dom (EL | (v .edgesOut())) holds
(EL | (v .edgesOut())) . e = ((FF:PushFlow (EL,P)) | (v .edgesOut())) . elet e be
object ;
( e in dom (EL | (v .edgesOut())) implies (EL | (v .edgesOut())) . e = ((FF:PushFlow (EL,P)) | (v .edgesOut())) . e )assume A191:
e in dom (EL | (v .edgesOut()))
;
(EL | (v .edgesOut())) . e = ((FF:PushFlow (EL,P)) | (v .edgesOut())) . ethen A192:
((FF:PushFlow (EL,P)) | (v .edgesOut())) . e = (FF:PushFlow (EL,P)) . e
by FUNCT_1:49;
A193:
e in v .edgesOut()
by A191;
(EL | (v .edgesOut())) . e = EL . e
by A191, FUNCT_1:49;
hence
(EL | (v .edgesOut())) . e = ((FF:PushFlow (EL,P)) | (v .edgesOut())) . e
by A4, A193, A192, A194, Def17;
verum end; A197:
dom (EL | (v .edgesIn())) = v .edgesIn()
by PARTFUN1:def 2;
A198:
now for e being object st e in dom (EL | (v .edgesIn())) holds
(EL | (v .edgesIn())) . e = ((FF:PushFlow (EL,P)) | (v .edgesIn())) . elet e be
object ;
( e in dom (EL | (v .edgesIn())) implies (EL | (v .edgesIn())) . e = ((FF:PushFlow (EL,P)) | (v .edgesIn())) . e )assume A199:
e in dom (EL | (v .edgesIn()))
;
(EL | (v .edgesIn())) . e = ((FF:PushFlow (EL,P)) | (v .edgesIn())) . ethen A200:
((FF:PushFlow (EL,P)) | (v .edgesIn())) . e = (FF:PushFlow (EL,P)) . e
by FUNCT_1:49;
(EL | (v .edgesIn())) . e = EL . e
by A199, FUNCT_1:49;
hence
(EL | (v .edgesIn())) . e = ((FF:PushFlow (EL,P)) | (v .edgesIn())) . e
by A4, A197, A199, A200, A201, Def17;
verum end;
dom ((FF:PushFlow (EL,P)) | (v .edgesOut())) = v .edgesOut()
by PARTFUN1:def 2;
then A204:
EL | (v .edgesOut()) = (FF:PushFlow (EL,P)) | (v .edgesOut())
by A189, A190, FUNCT_1:2;
dom (EL | (v .edgesIn())) = dom ((FF:PushFlow (EL,P)) | (v .edgesIn()))
by A197, PARTFUN1:def 2;
hence Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) =
Sum (EL | (v .edgesIn()))
by A198, FUNCT_1:2
.=
Sum ((FF:PushFlow (EL,P)) | (v .edgesOut()))
by A2, A28, A29, A204
;
verum end; end; end; hence
Sum ((FF:PushFlow (EL,P)) | (v .edgesIn())) = Sum ((FF:PushFlow (EL,P)) | (v .edgesOut()))
;
verum end;
hence
FF:PushFlow (EL,P) has_valid_flow_from source,sink
; verum