let I be non empty set ; :: thesis: for A being non-Empty TopStruct-yielding ManySortedSet of I st ( for i being Element of I holds
( A . i is identifying_close_blocks & A . i is with_non_trivial_blocks & not for i being Element of I holds A . i is void ) ) holds
Segre_Product A is identifying_close_blocks

let A be non-Empty TopStruct-yielding ManySortedSet of I; :: thesis: ( ( for i being Element of I holds
( A . i is identifying_close_blocks & A . i is with_non_trivial_blocks & not for i being Element of I holds A . i is void ) ) implies Segre_Product A is identifying_close_blocks )

assume A1: for i being Element of I holds
( A . i is identifying_close_blocks & A . i is with_non_trivial_blocks & not for i being Element of I holds A . i is void ) ; :: thesis: Segre_Product A is identifying_close_blocks
for k, l being Block of (Segre_Product A) st 2 c= card (k /\ l) holds
k = l
proof
let k, l be Block of (Segre_Product A); :: thesis: ( 2 c= card (k /\ l) implies k = l )
assume 2 c= card (k /\ l) ; :: thesis: k = l
then consider a, b being object such that
A2: a in k /\ l and
A3: b in k /\ l and
A4: a <> b by Th2;
not Segre_Product A is void by A1, Th15;
then consider B being Segre-like ManySortedSubset of Carrier A such that
A5: k = product B and
A6: ex i being Element of I st B . i is Block of (A . i) by Def22;
A7: b in product B by A5, A3, XBOOLE_0:def 4;
then reconsider b = b as Function by CARD_3:48;
A8: dom b = dom B by A7, CARD_3:9
.= I by PARTFUN1:def 2 ;
then reconsider b = b as ManySortedSet of I by PARTFUN1:def 2, RELAT_1:def 18;
A9: a in product B by A5, A2, XBOOLE_0:def 4;
consider i being Element of I such that
A10: B . i is Block of (A . i) by A6;
A11: for j being Element of I st j <> i holds
B . j is 1 -element
proof
let j be Element of I; :: thesis: ( j <> i implies B . j is 1 -element )
assume A12: j <> i ; :: thesis: B . j is 1 -element
consider i1 being Element of I such that
A13: for j1 being Element of I st j1 <> i1 holds
B . j1 is 1 -element by Def20;
A . i is with_non_trivial_blocks by A1;
then 2 c= card (B . i) by A10;
then not B . i is 1 -element by Th4;
then i1 = i by A13;
hence B . j is 1 -element by A12, A13; :: thesis: verum
end;
not Segre_Product A is void by A1, Th15;
then consider C being Segre-like ManySortedSubset of Carrier A such that
A14: l = product C and
A15: ex i being Element of I st C . i is Block of (A . i) by Def22;
A16: dom C = I by PARTFUN1:def 2;
consider j being Element of I such that
A17: C . j is Block of (A . j) by A15;
reconsider a = a as Function by A9, CARD_3:48;
A18: dom a = dom B by A9, CARD_3:9
.= I by PARTFUN1:def 2 ;
then reconsider a = a as ManySortedSet of I by PARTFUN1:def 2, RELAT_1:def 18;
consider x being object such that
A19: x in I and
A20: a . x <> b . x by A4, A18, A8, FUNCT_1:2;
reconsider x = x as Element of I by A19;
dom B = I by PARTFUN1:def 2;
then A21: b . x in B . x by A7, CARD_3:9;
dom B = I by PARTFUN1:def 2;
then A22: a . x in B . x by A9, CARD_3:9;
then 2 c= card (B . x) by A20, A21, Th2;
then not B . x is 1 -element by Th4;
then A23: x = i by A11;
b in product C by A14, A3, XBOOLE_0:def 4;
then A24: b . x in C . x by A16, CARD_3:9;
A25: a in product C by A14, A2, XBOOLE_0:def 4;
A26: for i being Element of I st j <> i holds
C . i is 1 -element
proof
let i be Element of I; :: thesis: ( j <> i implies C . i is 1 -element )
assume A27: j <> i ; :: thesis: C . i is 1 -element
consider j1 being Element of I such that
A28: for i1 being Element of I st j1 <> i1 holds
C . i1 is 1 -element by Def20;
A . j is with_non_trivial_blocks by A1;
then 2 c= card (C . j) by A17;
then not C . j is 1 -element by Th4;
then j1 = j by A28;
hence C . i is 1 -element by A27, A28; :: thesis: verum
end;
A29: dom B = I by PARTFUN1:def 2
.= dom C by PARTFUN1:def 2 ;
dom C = I by PARTFUN1:def 2;
then A30: a . x in C . x by A25, CARD_3:9;
then 2 c= card (C . x) by A20, A24, Th2;
then not C . x is 1 -element by Th4;
then A31: x = j by A26;
for s being object st s in dom B holds
B . s c= C . s
proof
let s be object ; :: thesis: ( s in dom B implies B . s c= C . s )
assume A32: s in dom B ; :: thesis: B . s c= C . s
then reconsider t = s as Element of I by PARTFUN1:def 2;
per cases ( t = x or s <> x ) ;
suppose A33: t = x ; :: thesis: B . s c= C . s
then reconsider Ct = C . t as Block of (A . t) by A17, A31;
reconsider Bt = B . t as Block of (A . t) by A10, A23, A33;
( a . t in Bt /\ Ct & b . t in Bt /\ Ct ) by A22, A21, A30, A24, A33, XBOOLE_0:def 4;
then A34: 2 c= card (Bt /\ Ct) by A20, A33, Th2;
A . t is identifying_close_blocks by A1;
hence B . s c= C . s by A34; :: thesis: verum
end;
suppose s <> x ; :: thesis: B . s c= C . s
then B . t is 1 -element by A11, A23;
then consider y being object such that
A35: B . t = {y} by ZFMISC_1:131;
A36: a . t in C . t by A25, A29, A32, CARD_3:9;
a . t in B . t by A9, A32, CARD_3:9;
then a . t = y by A35, TARSKI:def 1;
hence B . s c= C . s by A35, A36, ZFMISC_1:31; :: thesis: verum
end;
end;
end;
hence k c= l by A5, A14, A29, CARD_3:27; :: according to XBOOLE_0:def 10 :: thesis: l c= k
for s being object st s in dom C holds
C . s c= B . s
proof
let s be object ; :: thesis: ( s in dom C implies C . s c= B . s )
assume A37: s in dom C ; :: thesis: C . s c= B . s
then reconsider t = s as Element of I by PARTFUN1:def 2;
per cases ( t = x or s <> x ) ;
suppose A38: t = x ; :: thesis: C . s c= B . s
then reconsider Ct = C . t as Block of (A . t) by A17, A31;
reconsider Bt = B . t as Block of (A . t) by A10, A23, A38;
( a . t in Bt /\ Ct & b . t in Bt /\ Ct ) by A22, A21, A30, A24, A38, XBOOLE_0:def 4;
then A39: 2 c= card (Bt /\ Ct) by A20, A38, Th2;
A . t is identifying_close_blocks by A1;
hence C . s c= B . s by A39; :: thesis: verum
end;
suppose s <> x ; :: thesis: C . s c= B . s
then C . t is 1 -element by A26, A31;
then consider y being object such that
A40: C . t = {y} by ZFMISC_1:131;
A41: a . t in B . t by A9, A29, A37, CARD_3:9;
a . t in C . t by A25, A37, CARD_3:9;
then a . t = y by A40, TARSKI:def 1;
hence C . s c= B . s by A40, A41, ZFMISC_1:31; :: thesis: verum
end;
end;
end;
hence l c= k by A5, A14, A29, CARD_3:27; :: thesis: verum
end;
hence Segre_Product A is identifying_close_blocks ; :: thesis: verum