:: MCART_1 semantic presentation

theorem Th1: :: MCART_1:1
for b1 being set holds
not ( b1 <> {} & ( for b2 being set holds
not ( b2 in b1 & b2 misses b1 ) ) )
proof end;

theorem Th2: :: MCART_1:2
for b1 being set holds
not ( b1 <> {} & ( for b2 being set holds
not ( b2 in b1 & ( for b3 being set holds
( b3 in b2 implies b3 misses b1 ) ) ) ) )
proof end;

theorem Th3: :: MCART_1:3
for b1 being set holds
not ( b1 <> {} & ( for b2 being set holds
not ( b2 in b1 & ( for b3, b4 being set holds
( b3 in b4 & b4 in b2 implies b3 misses b1 ) ) ) ) )
proof end;

theorem Th4: :: MCART_1:4
for b1 being set holds
not ( b1 <> {} & ( for b2 being set holds
not ( b2 in b1 & ( for b3, b4, b5 being set holds
( b3 in b4 & b4 in b5 & b5 in b2 implies b3 misses b1 ) ) ) ) )
proof end;

theorem Th5: :: MCART_1:5
for b1 being set holds
not ( b1 <> {} & ( for b2 being set holds
not ( b2 in b1 & ( for b3, b4, b5, b6 being set holds
( b3 in b4 & b4 in b5 & b5 in b6 & b6 in b2 implies b3 misses b1 ) ) ) ) )
proof end;

theorem Th6: :: MCART_1:6
for b1 being set holds
not ( b1 <> {} & ( for b2 being set holds
not ( b2 in b1 & ( for b3, b4, b5, b6, b7 being set holds
( b3 in b4 & b4 in b5 & b5 in b6 & b6 in b7 & b7 in b2 implies b3 misses b1 ) ) ) ) )
proof end;

definition
let c1 be set ;
given c2, c3 being set such that E5: c1 = [c2,c3] ;
func c1 `1 -> set means :Def1: :: MCART_1:def 1
for b1, b2 being set holds
( a1 = [b1,b2] implies a2 = b1 );
existence
ex b1 being set st
for b2, b3 being set holds
( c1 = [b2,b3] implies b1 = b2 )
proof end;
uniqueness
for b1, b2 being set holds
( ( for b3, b4 being set holds
( c1 = [b3,b4] implies b1 = b3 ) ) & ( for b3, b4 being set holds
( c1 = [b3,b4] implies b2 = b3 ) ) implies b1 = b2 )
proof end;
func c1 `2 -> set means :Def2: :: MCART_1:def 2
for b1, b2 being set holds
( a1 = [b1,b2] implies a2 = b2 );
existence
ex b1 being set st
for b2, b3 being set holds
( c1 = [b2,b3] implies b1 = b3 )
proof end;
uniqueness
for b1, b2 being set holds
( ( for b3, b4 being set holds
( c1 = [b3,b4] implies b1 = b4 ) ) & ( for b3, b4 being set holds
( c1 = [b3,b4] implies b2 = b4 ) ) implies b1 = b2 )
proof end;
end;

:: deftheorem Def1 defines `1 MCART_1:def 1 :
for b1 being set holds
( ex b2, b3 being set st b1 = [b2,b3] implies for b2 being set holds
( b2 = b1 `1 iff for b3, b4 being set holds
( b1 = [b3,b4] implies b2 = b3 ) ) );

:: deftheorem Def2 defines `2 MCART_1:def 2 :
for b1 being set holds
( ex b2, b3 being set st b1 = [b2,b3] implies for b2 being set holds
( b2 = b1 `2 iff for b3, b4 being set holds
( b1 = [b3,b4] implies b2 = b4 ) ) );

theorem Th7: :: MCART_1:7
for b1, b2 being set holds
( [b1,b2] `1 = b1 & [b1,b2] `2 = b2 ) by Def1, Def2;

theorem Th8: :: MCART_1:8
for b1 being set holds
( ex b2, b3 being set st b1 = [b2,b3] implies [(b1 `1 ),(b1 `2 )] = b1 )
proof end;

theorem Th9: :: MCART_1:9
for b1 being set holds
not ( b1 <> {} & ( for b2 being set holds
not ( b2 in b1 & ( for b3, b4 being set holds
not ( ( b3 in b1 or b4 in b1 ) & b2 = [b3,b4] ) ) ) ) )
proof end;

theorem Th10: :: MCART_1:10
for b1, b2, b3 being set holds
( b1 in [:b2,b3:] implies ( b1 `1 in b2 & b1 `2 in b3 ) )
proof end;

theorem Th11: :: MCART_1:11
for b1, b2, b3 being set holds
( ex b4, b5 being set st b1 = [b4,b5] & b1 `1 in b2 & b1 `2 in b3 implies b1 in [:b2,b3:] )
proof end;

theorem Th12: :: MCART_1:12
for b1, b2, b3 being set holds
( b1 in [:{b2},b3:] implies ( b1 `1 = b2 & b1 `2 in b3 ) )
proof end;

theorem Th13: :: MCART_1:13
for b1, b2, b3 being set holds
( b1 in [:b2,{b3}:] implies ( b1 `1 in b2 & b1 `2 = b3 ) )
proof end;

theorem Th14: :: MCART_1:14
for b1, b2, b3 being set holds
( b1 in [:{b2},{b3}:] implies ( b1 `1 = b2 & b1 `2 = b3 ) )
proof end;

theorem Th15: :: MCART_1:15
for b1, b2, b3, b4 being set holds
( b1 in [:{b2,b3},b4:] implies ( ( b1 `1 = b2 or b1 `1 = b3 ) & b1 `2 in b4 ) )
proof end;

theorem Th16: :: MCART_1:16
for b1, b2, b3, b4 being set holds
( b1 in [:b2,{b3,b4}:] implies ( b1 `1 in b2 & ( b1 `2 = b3 or b1 `2 = b4 ) ) )
proof end;

theorem Th17: :: MCART_1:17
for b1, b2, b3, b4 being set holds
( b1 in [:{b2,b3},{b4}:] implies ( ( b1 `1 = b2 or b1 `1 = b3 ) & b1 `2 = b4 ) )
proof end;

theorem Th18: :: MCART_1:18
for b1, b2, b3, b4 being set holds
( b1 in [:{b2},{b3,b4}:] implies ( b1 `1 = b2 & ( b1 `2 = b3 or b1 `2 = b4 ) ) )
proof end;

theorem Th19: :: MCART_1:19
for b1, b2, b3, b4, b5 being set holds
( b1 in [:{b2,b3},{b4,b5}:] implies ( ( b1 `1 = b2 or b1 `1 = b3 ) & ( b1 `2 = b4 or b1 `2 = b5 ) ) )
proof end;

theorem Th20: :: MCART_1:20
for b1 being set holds
( ex b2, b3 being set st b1 = [b2,b3] implies ( b1 <> b1 `1 & b1 <> b1 `2 ) )
proof end;

theorem Th21: :: MCART_1:21
canceled;

theorem Th22: :: MCART_1:22
canceled;

theorem Th23: :: MCART_1:23
for b1, b2, b3 being set holds
( b1 in [:b2,b3:] implies b1 = [(b1 `1 ),(b1 `2 )] )
proof end;

theorem Th24: :: MCART_1:24
for b1, b2 being set holds
( b1 <> {} & b2 <> {} implies for b3 being Element of [:b1,b2:] holds b3 = [(b3 `1 ),(b3 `2 )] )
proof end;

Lemma13: for b1, b2 being set holds
( b1 <> {} & b2 <> {} implies for b3 being Element of [:b1,b2:] holds
ex b4 being Element of b1ex b5 being Element of b2 st b3 = [b4,b5] )
proof end;

theorem Th25: :: MCART_1:25
for b1, b2, b3, b4 being set holds [:{b1,b2},{b3,b4}:] = {[b1,b3],[b1,b4],[b2,b3],[b2,b4]}
proof end;

theorem Th26: :: MCART_1:26
for b1, b2 being set holds
( b1 <> {} & b2 <> {} implies for b3 being Element of [:b1,b2:] holds
( b3 <> b3 `1 & b3 <> b3 `2 ) )
proof end;

definition
let c1, c2, c3 be set ;
func [c1,c2,c3] -> set equals :: MCART_1:def 3
[[a1,a2],a3];
coherence
[[c1,c2],c3] is set
;
end;

:: deftheorem Def3 defines [ MCART_1:def 3 :
for b1, b2, b3 being set holds [b1,b2,b3] = [[b1,b2],b3];

theorem Th27: :: MCART_1:27
canceled;

theorem Th28: :: MCART_1:28
for b1, b2, b3, b4, b5, b6 being set holds
( [b1,b2,b3] = [b4,b5,b6] implies ( b1 = b4 & b2 = b5 & b3 = b6 ) )
proof end;

theorem Th29: :: MCART_1:29
for b1 being set holds
not ( b1 <> {} & ( for b2 being set holds
not ( b2 in b1 & ( for b3, b4, b5 being set holds
not ( ( b3 in b1 or b4 in b1 ) & b2 = [b3,b4,b5] ) ) ) ) )
proof end;

definition
let c1, c2, c3, c4 be set ;
func [c1,c2,c3,c4] -> set equals :: MCART_1:def 4
[[a1,a2,a3],a4];
coherence
[[c1,c2,c3],c4] is set
;
end;

:: deftheorem Def4 defines [ MCART_1:def 4 :
for b1, b2, b3, b4 being set holds [b1,b2,b3,b4] = [[b1,b2,b3],b4];

theorem Th30: :: MCART_1:30
canceled;

theorem Th31: :: MCART_1:31
for b1, b2, b3, b4 being set holds [b1,b2,b3,b4] = [[[b1,b2],b3],b4] ;

theorem Th32: :: MCART_1:32
for b1, b2, b3, b4 being set holds [b1,b2,b3,b4] = [[b1,b2],b3,b4] ;

theorem Th33: :: MCART_1:33
for b1, b2, b3, b4, b5, b6, b7, b8 being set holds
( [b1,b2,b3,b4] = [b5,b6,b7,b8] implies ( b1 = b5 & b2 = b6 & b3 = b7 & b4 = b8 ) )
proof end;

theorem Th34: :: MCART_1:34
for b1 being set holds
not ( b1 <> {} & ( for b2 being set holds
not ( b2 in b1 & ( for b3, b4, b5, b6 being set holds
not ( ( b3 in b1 or b4 in b1 ) & b2 = [b3,b4,b5,b6] ) ) ) ) )
proof end;

theorem Th35: :: MCART_1:35
for b1, b2, b3 being set holds
( ( b1 <> {} & b2 <> {} & b3 <> {} ) iff [:b1,b2,b3:] <> {} )
proof end;

theorem Th36: :: MCART_1:36
for b1, b2, b3, b4, b5, b6 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} & [:b1,b2,b3:] = [:b4,b5,b6:] implies ( b1 = b4 & b2 = b5 & b3 = b6 ) )
proof end;

theorem Th37: :: MCART_1:37
for b1, b2, b3, b4, b5, b6 being set holds
( [:b1,b2,b3:] <> {} & [:b1,b2,b3:] = [:b4,b5,b6:] implies ( b1 = b4 & b2 = b5 & b3 = b6 ) )
proof end;

theorem Th38: :: MCART_1:38
for b1, b2 being set holds
( [:b1,b1,b1:] = [:b2,b2,b2:] implies b1 = b2 )
proof end;

Lemma22: for b1, b2, b3 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} implies for b4 being Element of [:b1,b2,b3:] holds
ex b5 being Element of b1ex b6 being Element of b2ex b7 being Element of b3 st b4 = [b5,b6,b7] )
proof end;

theorem Th39: :: MCART_1:39
for b1, b2, b3 being set holds [:{b1},{b2},{b3}:] = {[b1,b2,b3]}
proof end;

theorem Th40: :: MCART_1:40
for b1, b2, b3, b4 being set holds [:{b1,b2},{b3},{b4}:] = {[b1,b3,b4],[b2,b3,b4]}
proof end;

theorem Th41: :: MCART_1:41
for b1, b2, b3, b4 being set holds [:{b1},{b2,b3},{b4}:] = {[b1,b2,b4],[b1,b3,b4]}
proof end;

theorem Th42: :: MCART_1:42
for b1, b2, b3, b4 being set holds [:{b1},{b2},{b3,b4}:] = {[b1,b2,b3],[b1,b2,b4]}
proof end;

theorem Th43: :: MCART_1:43
for b1, b2, b3, b4, b5 being set holds [:{b1,b2},{b3,b4},{b5}:] = {[b1,b3,b5],[b2,b3,b5],[b1,b4,b5],[b2,b4,b5]}
proof end;

theorem Th44: :: MCART_1:44
for b1, b2, b3, b4, b5 being set holds [:{b1,b2},{b3},{b4,b5}:] = {[b1,b3,b4],[b2,b3,b4],[b1,b3,b5],[b2,b3,b5]}
proof end;

theorem Th45: :: MCART_1:45
for b1, b2, b3, b4, b5 being set holds [:{b1},{b2,b3},{b4,b5}:] = {[b1,b2,b4],[b1,b3,b4],[b1,b2,b5],[b1,b3,b5]}
proof end;

theorem Th46: :: MCART_1:46
for b1, b2, b3, b4, b5, b6 being set holds [:{b1,b2},{b3,b4},{b5,b6}:] = {[b1,b3,b5],[b1,b4,b5],[b1,b3,b6],[b1,b4,b6],[b2,b3,b5],[b2,b4,b5],[b2,b3,b6],[b2,b4,b6]}
proof end;

definition
let c1, c2, c3 be set ;
assume E24: ( c1 <> {} & c2 <> {} & c3 <> {} ) ;
let c4 be Element of [:c1,c2,c3:];
func c4 `1 -> Element of a1 means :Def5: :: MCART_1:def 5
for b1, b2, b3 being set holds
( a4 = [b1,b2,b3] implies a5 = b1 );
existence
ex b1 being Element of c1 st
for b2, b3, b4 being set holds
( c4 = [b2,b3,b4] implies b1 = b2 )
proof end;
uniqueness
for b1, b2 being Element of c1 holds
( ( for b3, b4, b5 being set holds
( c4 = [b3,b4,b5] implies b1 = b3 ) ) & ( for b3, b4, b5 being set holds
( c4 = [b3,b4,b5] implies b2 = b3 ) ) implies b1 = b2 )
proof end;
func c4 `2 -> Element of a2 means :Def6: :: MCART_1:def 6
for b1, b2, b3 being set holds
( a4 = [b1,b2,b3] implies a5 = b2 );
existence
ex b1 being Element of c2 st
for b2, b3, b4 being set holds
( c4 = [b2,b3,b4] implies b1 = b3 )
proof end;
uniqueness
for b1, b2 being Element of c2 holds
( ( for b3, b4, b5 being set holds
( c4 = [b3,b4,b5] implies b1 = b4 ) ) & ( for b3, b4, b5 being set holds
( c4 = [b3,b4,b5] implies b2 = b4 ) ) implies b1 = b2 )
proof end;
func c4 `3 -> Element of a3 means :Def7: :: MCART_1:def 7
for b1, b2, b3 being set holds
( a4 = [b1,b2,b3] implies a5 = b3 );
existence
ex b1 being Element of c3 st
for b2, b3, b4 being set holds
( c4 = [b2,b3,b4] implies b1 = b4 )
proof end;
uniqueness
for b1, b2 being Element of c3 holds
( ( for b3, b4, b5 being set holds
( c4 = [b3,b4,b5] implies b1 = b5 ) ) & ( for b3, b4, b5 being set holds
( c4 = [b3,b4,b5] implies b2 = b5 ) ) implies b1 = b2 )
proof end;
end;

:: deftheorem Def5 defines `1 MCART_1:def 5 :
for b1, b2, b3 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} implies for b4 being Element of [:b1,b2,b3:]
for b5 being Element of b1 holds
( b5 = b4 `1 iff for b6, b7, b8 being set holds
( b4 = [b6,b7,b8] implies b5 = b6 ) ) );

:: deftheorem Def6 defines `2 MCART_1:def 6 :
for b1, b2, b3 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} implies for b4 being Element of [:b1,b2,b3:]
for b5 being Element of b2 holds
( b5 = b4 `2 iff for b6, b7, b8 being set holds
( b4 = [b6,b7,b8] implies b5 = b7 ) ) );

:: deftheorem Def7 defines `3 MCART_1:def 7 :
for b1, b2, b3 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} implies for b4 being Element of [:b1,b2,b3:]
for b5 being Element of b3 holds
( b5 = b4 `3 iff for b6, b7, b8 being set holds
( b4 = [b6,b7,b8] implies b5 = b8 ) ) );

theorem Th47: :: MCART_1:47
for b1, b2, b3 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} implies for b4 being Element of [:b1,b2,b3:]
for b5, b6, b7 being set holds
( b4 = [b5,b6,b7] implies ( b4 `1 = b5 & b4 `2 = b6 & b4 `3 = b7 ) ) ) by Def5, Def6, Def7;

theorem Th48: :: MCART_1:48
for b1, b2, b3 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} implies for b4 being Element of [:b1,b2,b3:] holds b4 = [(b4 `1 ),(b4 `2 ),(b4 `3 )] )
proof end;

theorem Th49: :: MCART_1:49
for b1, b2, b3 being set holds
( not ( not b1 c= [:b1,b2,b3:] & not b1 c= [:b2,b3,b1:] & not b1 c= [:b3,b1,b2:] ) implies b1 = {} )
proof end;

theorem Th50: :: MCART_1:50
for b1, b2, b3 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} implies for b4 being Element of [:b1,b2,b3:] holds
( b4 `1 = (b4 `1 ) `1 & b4 `2 = (b4 `1 ) `2 & b4 `3 = b4 `2 ) )
proof end;

theorem Th51: :: MCART_1:51
for b1, b2, b3 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} implies for b4 being Element of [:b1,b2,b3:] holds
( b4 <> b4 `1 & b4 <> b4 `2 & b4 <> b4 `3 ) )
proof end;

theorem Th52: :: MCART_1:52
for b1, b2, b3, b4, b5, b6 being set holds
( [:b1,b2,b3:] meets [:b4,b5,b6:] implies ( b1 meets b4 & b2 meets b5 & b3 meets b6 ) )
proof end;

theorem Th53: :: MCART_1:53
for b1, b2, b3, b4 being set holds [:b1,b2,b3,b4:] = [:[:[:b1,b2:],b3:],b4:]
proof end;

theorem Th54: :: MCART_1:54
for b1, b2, b3, b4 being set holds [:[:b1,b2:],b3,b4:] = [:b1,b2,b3,b4:]
proof end;

theorem Th55: :: MCART_1:55
for b1, b2, b3, b4 being set holds
( ( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} ) iff [:b1,b2,b3,b4:] <> {} )
proof end;

theorem Th56: :: MCART_1:56
for b1, b2, b3, b4, b5, b6, b7, b8 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} & [:b1,b2,b3,b4:] = [:b5,b6,b7,b8:] implies ( b1 = b5 & b2 = b6 & b3 = b7 & b4 = b8 ) )
proof end;

theorem Th57: :: MCART_1:57
for b1, b2, b3, b4, b5, b6, b7, b8 being set holds
( [:b1,b2,b3,b4:] <> {} & [:b1,b2,b3,b4:] = [:b5,b6,b7,b8:] implies ( b1 = b5 & b2 = b6 & b3 = b7 & b4 = b8 ) )
proof end;

theorem Th58: :: MCART_1:58
for b1, b2 being set holds
( [:b1,b1,b1,b1:] = [:b2,b2,b2,b2:] implies b1 = b2 )
proof end;

Lemma35: for b1, b2, b3, b4 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} implies for b5 being Element of [:b1,b2,b3,b4:] holds
ex b6 being Element of b1ex b7 being Element of b2ex b8 being Element of b3ex b9 being Element of b4 st b5 = [b6,b7,b8,b9] )
proof end;

definition
let c1, c2, c3, c4 be set ;
assume E36: ( c1 <> {} & c2 <> {} & c3 <> {} & c4 <> {} ) ;
let c5 be Element of [:c1,c2,c3,c4:];
func c5 `1 -> Element of a1 means :Def8: :: MCART_1:def 8
for b1, b2, b3, b4 being set holds
( a5 = [b1,b2,b3,b4] implies a6 = b1 );
existence
ex b1 being Element of c1 st
for b2, b3, b4, b5 being set holds
( c5 = [b2,b3,b4,b5] implies b1 = b2 )
proof end;
uniqueness
for b1, b2 being Element of c1 holds
( ( for b3, b4, b5, b6 being set holds
( c5 = [b3,b4,b5,b6] implies b1 = b3 ) ) & ( for b3, b4, b5, b6 being set holds
( c5 = [b3,b4,b5,b6] implies b2 = b3 ) ) implies b1 = b2 )
proof end;
func c5 `2 -> Element of a2 means :Def9: :: MCART_1:def 9
for b1, b2, b3, b4 being set holds
( a5 = [b1,b2,b3,b4] implies a6 = b2 );
existence
ex b1 being Element of c2 st
for b2, b3, b4, b5 being set holds
( c5 = [b2,b3,b4,b5] implies b1 = b3 )
proof end;
uniqueness
for b1, b2 being Element of c2 holds
( ( for b3, b4, b5, b6 being set holds
( c5 = [b3,b4,b5,b6] implies b1 = b4 ) ) & ( for b3, b4, b5, b6 being set holds
( c5 = [b3,b4,b5,b6] implies b2 = b4 ) ) implies b1 = b2 )
proof end;
func c5 `3 -> Element of a3 means :Def10: :: MCART_1:def 10
for b1, b2, b3, b4 being set holds
( a5 = [b1,b2,b3,b4] implies a6 = b3 );
existence
ex b1 being Element of c3 st
for b2, b3, b4, b5 being set holds
( c5 = [b2,b3,b4,b5] implies b1 = b4 )
proof end;
uniqueness
for b1, b2 being Element of c3 holds
( ( for b3, b4, b5, b6 being set holds
( c5 = [b3,b4,b5,b6] implies b1 = b5 ) ) & ( for b3, b4, b5, b6 being set holds
( c5 = [b3,b4,b5,b6] implies b2 = b5 ) ) implies b1 = b2 )
proof end;
func c5 `4 -> Element of a4 means :Def11: :: MCART_1:def 11
for b1, b2, b3, b4 being set holds
( a5 = [b1,b2,b3,b4] implies a6 = b4 );
existence
ex b1 being Element of c4 st
for b2, b3, b4, b5 being set holds
( c5 = [b2,b3,b4,b5] implies b1 = b5 )
proof end;
uniqueness
for b1, b2 being Element of c4 holds
( ( for b3, b4, b5, b6 being set holds
( c5 = [b3,b4,b5,b6] implies b1 = b6 ) ) & ( for b3, b4, b5, b6 being set holds
( c5 = [b3,b4,b5,b6] implies b2 = b6 ) ) implies b1 = b2 )
proof end;
end;

:: deftheorem Def8 defines `1 MCART_1:def 8 :
for b1, b2, b3, b4 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} implies for b5 being Element of [:b1,b2,b3,b4:]
for b6 being Element of b1 holds
( b6 = b5 `1 iff for b7, b8, b9, b10 being set holds
( b5 = [b7,b8,b9,b10] implies b6 = b7 ) ) );

:: deftheorem Def9 defines `2 MCART_1:def 9 :
for b1, b2, b3, b4 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} implies for b5 being Element of [:b1,b2,b3,b4:]
for b6 being Element of b2 holds
( b6 = b5 `2 iff for b7, b8, b9, b10 being set holds
( b5 = [b7,b8,b9,b10] implies b6 = b8 ) ) );

:: deftheorem Def10 defines `3 MCART_1:def 10 :
for b1, b2, b3, b4 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} implies for b5 being Element of [:b1,b2,b3,b4:]
for b6 being Element of b3 holds
( b6 = b5 `3 iff for b7, b8, b9, b10 being set holds
( b5 = [b7,b8,b9,b10] implies b6 = b9 ) ) );

:: deftheorem Def11 defines `4 MCART_1:def 11 :
for b1, b2, b3, b4 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} implies for b5 being Element of [:b1,b2,b3,b4:]
for b6 being Element of b4 holds
( b6 = b5 `4 iff for b7, b8, b9, b10 being set holds
( b5 = [b7,b8,b9,b10] implies b6 = b10 ) ) );

theorem Th59: :: MCART_1:59
for b1, b2, b3, b4 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} implies for b5 being Element of [:b1,b2,b3,b4:]
for b6, b7, b8, b9 being set holds
( b5 = [b6,b7,b8,b9] implies ( b5 `1 = b6 & b5 `2 = b7 & b5 `3 = b8 & b5 `4 = b9 ) ) ) by Def8, Def9, Def10, Def11;

theorem Th60: :: MCART_1:60
for b1, b2, b3, b4 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} implies for b5 being Element of [:b1,b2,b3,b4:] holds b5 = [(b5 `1 ),(b5 `2 ),(b5 `3 ),(b5 `4 )] )
proof end;

theorem Th61: :: MCART_1:61
for b1, b2, b3, b4 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} implies for b5 being Element of [:b1,b2,b3,b4:] holds
( b5 `1 = ((b5 `1 ) `1 ) `1 & b5 `2 = ((b5 `1 ) `1 ) `2 & b5 `3 = (b5 `1 ) `2 & b5 `4 = b5 `2 ) )
proof end;

theorem Th62: :: MCART_1:62
for b1, b2, b3, b4 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} implies for b5 being Element of [:b1,b2,b3,b4:] holds
( b5 <> b5 `1 & b5 <> b5 `2 & b5 <> b5 `3 & b5 <> b5 `4 ) )
proof end;

theorem Th63: :: MCART_1:63
for b1, b2, b3, b4 being set holds
( not ( not b1 c= [:b1,b2,b3,b4:] & not b1 c= [:b2,b3,b4,b1:] & not b1 c= [:b3,b4,b1,b2:] & not b1 c= [:b4,b1,b2,b3:] ) implies b1 = {} )
proof end;

theorem Th64: :: MCART_1:64
for b1, b2, b3, b4, b5, b6, b7, b8 being set holds
( [:b1,b2,b3,b4:] meets [:b5,b6,b7,b8:] implies ( b1 meets b5 & b2 meets b6 & b3 meets b7 & b4 meets b8 ) )
proof end;

theorem Th65: :: MCART_1:65
for b1, b2, b3, b4 being set holds [:{b1},{b2},{b3},{b4}:] = {[b1,b2,b3,b4]}
proof end;

theorem Th66: :: MCART_1:66
for b1, b2 being set holds
( [:b1,b2:] <> {} implies for b3 being Element of [:b1,b2:] holds
( b3 <> b3 `1 & b3 <> b3 `2 ) )
proof end;

theorem Th67: :: MCART_1:67
for b1, b2, b3 being set holds
( b1 in [:b2,b3:] implies ( b1 <> b1 `1 & b1 <> b1 `2 ) ) by Th66;

theorem Th68: :: MCART_1:68
for b1, b2, b3 being set
for b4 being Element of [:b1,b2,b3:] holds
( b1 <> {} & b2 <> {} & b3 <> {} implies for b5, b6, b7 being set holds
( b4 = [b5,b6,b7] implies ( b4 `1 = b5 & b4 `2 = b6 & b4 `3 = b7 ) ) ) by Def5, Def6, Def7;

theorem Th69: :: MCART_1:69
for b1, b2, b3, b4 being set
for b5 being Element of [:b1,b2,b3:] holds
( b1 <> {} & b2 <> {} & b3 <> {} & ( for b6 being Element of b1
for b7 being Element of b2
for b8 being Element of b3 holds
( b5 = [b6,b7,b8] implies b4 = b6 ) ) implies b4 = b5 `1 )
proof end;

theorem Th70: :: MCART_1:70
for b1, b2, b3, b4 being set
for b5 being Element of [:b1,b2,b3:] holds
( b1 <> {} & b2 <> {} & b3 <> {} & ( for b6 being Element of b1
for b7 being Element of b2
for b8 being Element of b3 holds
( b5 = [b6,b7,b8] implies b4 = b7 ) ) implies b4 = b5 `2 )
proof end;

theorem Th71: :: MCART_1:71
for b1, b2, b3, b4 being set
for b5 being Element of [:b1,b2,b3:] holds
( b1 <> {} & b2 <> {} & b3 <> {} & ( for b6 being Element of b1
for b7 being Element of b2
for b8 being Element of b3 holds
( b5 = [b6,b7,b8] implies b4 = b8 ) ) implies b4 = b5 `3 )
proof end;

theorem Th72: :: MCART_1:72
for b1, b2, b3, b4 being set holds
not ( b1 in [:b2,b3,b4:] & ( for b5, b6, b7 being set holds
not ( b5 in b2 & b6 in b3 & b7 in b4 & b1 = [b5,b6,b7] ) ) )
proof end;

theorem Th73: :: MCART_1:73
for b1, b2, b3, b4, b5, b6 being set holds
( [b1,b2,b3] in [:b4,b5,b6:] iff ( b1 in b4 & b2 in b5 & b3 in b6 ) )
proof end;

theorem Th74: :: MCART_1:74
for b1, b2, b3, b4 being set holds
( ( for b5 being set holds
( b5 in b1 iff ex b6, b7, b8 being set st
( b6 in b2 & b7 in b3 & b8 in b4 & b5 = [b6,b7,b8] ) ) ) implies b1 = [:b2,b3,b4:] )
proof end;

theorem Th75: :: MCART_1:75
for b1, b2, b3, b4, b5, b6 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} & b5 <> {} & b6 <> {} implies for b7 being Element of [:b1,b2,b3:]
for b8 being Element of [:b4,b5,b6:] holds
( b7 = b8 implies ( b7 `1 = b8 `1 & b7 `2 = b8 `2 & b7 `3 = b8 `3 ) ) )
proof end;

theorem Th76: :: MCART_1:76
for b1, b2, b3 being set
for b4 being Subset of b1
for b5 being Subset of b2
for b6 being Subset of b3
for b7 being Element of [:b1,b2,b3:] holds
( b7 in [:b4,b5,b6:] implies ( b7 `1 in b4 & b7 `2 in b5 & b7 `3 in b6 ) )
proof end;

theorem Th77: :: MCART_1:77
for b1, b2, b3, b4, b5, b6 being set holds
( b1 c= b2 & b3 c= b4 & b5 c= b6 implies [:b1,b3,b5:] c= [:b2,b4,b6:] )
proof end;

theorem Th78: :: MCART_1:78
for b1, b2, b3, b4 being set
for b5 being Element of [:b1,b2,b3,b4:] holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} implies for b6, b7, b8, b9 being set holds
( b5 = [b6,b7,b8,b9] implies ( b5 `1 = b6 & b5 `2 = b7 & b5 `3 = b8 & b5 `4 = b9 ) ) ) by Def8, Def9, Def10, Def11;

theorem Th79: :: MCART_1:79
for b1, b2, b3, b4, b5 being set
for b6 being Element of [:b1,b2,b3,b4:] holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} & ( for b7 being Element of b1
for b8 being Element of b2
for b9 being Element of b3
for b10 being Element of b4 holds
( b6 = [b7,b8,b9,b10] implies b5 = b7 ) ) implies b5 = b6 `1 )
proof end;

theorem Th80: :: MCART_1:80
for b1, b2, b3, b4, b5 being set
for b6 being Element of [:b1,b2,b3,b4:] holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} & ( for b7 being Element of b1
for b8 being Element of b2
for b9 being Element of b3
for b10 being Element of b4 holds
( b6 = [b7,b8,b9,b10] implies b5 = b8 ) ) implies b5 = b6 `2 )
proof end;

theorem Th81: :: MCART_1:81
for b1, b2, b3, b4, b5 being set
for b6 being Element of [:b1,b2,b3,b4:] holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} & ( for b7 being Element of b1
for b8 being Element of b2
for b9 being Element of b3
for b10 being Element of b4 holds
( b6 = [b7,b8,b9,b10] implies b5 = b9 ) ) implies b5 = b6 `3 )
proof end;

theorem Th82: :: MCART_1:82
for b1, b2, b3, b4, b5 being set
for b6 being Element of [:b1,b2,b3,b4:] holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} & ( for b7 being Element of b1
for b8 being Element of b2
for b9 being Element of b3
for b10 being Element of b4 holds
( b6 = [b7,b8,b9,b10] implies b5 = b10 ) ) implies b5 = b6 `4 )
proof end;

theorem Th83: :: MCART_1:83
for b1, b2, b3, b4, b5 being set holds
not ( b1 in [:b2,b3,b4,b5:] & ( for b6, b7, b8, b9 being set holds
not ( b6 in b2 & b7 in b3 & b8 in b4 & b9 in b5 & b1 = [b6,b7,b8,b9] ) ) )
proof end;

theorem Th84: :: MCART_1:84
for b1, b2, b3, b4, b5, b6, b7, b8 being set holds
( [b1,b2,b3,b4] in [:b5,b6,b7,b8:] iff ( b1 in b5 & b2 in b6 & b3 in b7 & b4 in b8 ) )
proof end;

theorem Th85: :: MCART_1:85
for b1, b2, b3, b4, b5 being set holds
( ( for b6 being set holds
( b6 in b1 iff ex b7, b8, b9, b10 being set st
( b7 in b2 & b8 in b3 & b9 in b4 & b10 in b5 & b6 = [b7,b8,b9,b10] ) ) ) implies b1 = [:b2,b3,b4,b5:] )
proof end;

theorem Th86: :: MCART_1:86
for b1, b2, b3, b4, b5, b6, b7, b8 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} & b5 <> {} & b6 <> {} & b7 <> {} & b8 <> {} implies for b9 being Element of [:b1,b2,b3,b4:]
for b10 being Element of [:b5,b6,b7,b8:] holds
( b9 = b10 implies ( b9 `1 = b10 `1 & b9 `2 = b10 `2 & b9 `3 = b10 `3 & b9 `4 = b10 `4 ) ) )
proof end;

theorem Th87: :: MCART_1:87
for b1, b2, b3, b4 being set
for b5 being Subset of b1
for b6 being Subset of b2
for b7 being Subset of b3
for b8 being Subset of b4
for b9 being Element of [:b1,b2,b3,b4:] holds
( b9 in [:b5,b6,b7,b8:] implies ( b9 `1 in b5 & b9 `2 in b6 & b9 `3 in b7 & b9 `4 in b8 ) )
proof end;

theorem Th88: :: MCART_1:88
for b1, b2, b3, b4, b5, b6, b7, b8 being set holds
( b1 c= b2 & b3 c= b4 & b5 c= b6 & b7 c= b8 implies [:b1,b3,b5,b7:] c= [:b2,b4,b6,b8:] )
proof end;

definition
let c1, c2 be set ;
let c3 be Subset of c1;
let c4 be Subset of c2;
redefine func [: as [:c3,c4:] -> Subset of [:a1,a2:];
coherence
[:c3,c4:] is Subset of [:c1,c2:]
by ZFMISC_1:119;
end;

definition
let c1, c2, c3 be set ;
let c4 be Subset of c1;
let c5 be Subset of c2;
let c6 be Subset of c3;
redefine func [: as [:c4,c5,c6:] -> Subset of [:a1,a2,a3:];
coherence
[:c4,c5,c6:] is Subset of [:c1,c2,c3:]
by Th77;
end;

definition
let c1, c2, c3, c4 be set ;
let c5 be Subset of c1;
let c6 be Subset of c2;
let c7 be Subset of c3;
let c8 be Subset of c4;
redefine func [: as [:c5,c6,c7,c8:] -> Subset of [:a1,a2,a3,a4:];
coherence
[:c5,c6,c7,c8:] is Subset of [:c1,c2,c3,c4:]
by Th88;
end;

definition
let c1 be Function;
func pr1 c1 -> Function means :: MCART_1:def 12
( dom a2 = dom a1 & ( for b1 being set holds
( b1 in dom a1 implies a2 . b1 = (a1 . b1) `1 ) ) );
existence
ex b1 being Function st
( dom b1 = dom c1 & ( for b2 being set holds
( b2 in dom c1 implies b1 . b2 = (c1 . b2) `1 ) ) )
proof end;
uniqueness
for b1, b2 being Function holds
( dom b1 = dom c1 & ( for b3 being set holds
( b3 in dom c1 implies b1 . b3 = (c1 . b3) `1 ) ) & dom b2 = dom c1 & ( for b3 being set holds
( b3 in dom c1 implies b2 . b3 = (c1 . b3) `1 ) ) implies b1 = b2 )
proof end;
func pr2 c1 -> Function means :: MCART_1:def 13
( dom a2 = dom a1 & ( for b1 being set holds
( b1 in dom a1 implies a2 . b1 = (a1 . b1) `2 ) ) );
existence
ex b1 being Function st
( dom b1 = dom c1 & ( for b2 being set holds
( b2 in dom c1 implies b1 . b2 = (c1 . b2) `2 ) ) )
proof end;
uniqueness
for b1, b2 being Function holds
( dom b1 = dom c1 & ( for b3 being set holds
( b3 in dom c1 implies b1 . b3 = (c1 . b3) `2 ) ) & dom b2 = dom c1 & ( for b3 being set holds
( b3 in dom c1 implies b2 . b3 = (c1 . b3) `2 ) ) implies b1 = b2 )
proof end;
end;

:: deftheorem Def12 defines pr1 MCART_1:def 12 :
for b1, b2 being Function holds
( b2 = pr1 b1 iff ( dom b2 = dom b1 & ( for b3 being set holds
( b3 in dom b1 implies b2 . b3 = (b1 . b3) `1 ) ) ) );

:: deftheorem Def13 defines pr2 MCART_1:def 13 :
for b1, b2 being Function holds
( b2 = pr2 b1 iff ( dom b2 = dom b1 & ( for b3 being set holds
( b3 in dom b1 implies b2 . b3 = (b1 . b3) `2 ) ) ) );

definition
let c1 be set ;
func c1 `11 -> set equals :: MCART_1:def 14
(a1 `1 ) `1 ;
coherence
(c1 `1 ) `1 is set
;
func c1 `12 -> set equals :: MCART_1:def 15
(a1 `1 ) `2 ;
coherence
(c1 `1 ) `2 is set
;
func c1 `21 -> set equals :: MCART_1:def 16
(a1 `2 ) `1 ;
coherence
(c1 `2 ) `1 is set
;
func c1 `22 -> set equals :: MCART_1:def 17
(a1 `2 ) `2 ;
coherence
(c1 `2 ) `2 is set
;
end;

:: deftheorem Def14 defines `11 MCART_1:def 14 :
for b1 being set holds b1 `11 = (b1 `1 ) `1 ;

:: deftheorem Def15 defines `12 MCART_1:def 15 :
for b1 being set holds b1 `12 = (b1 `1 ) `2 ;

:: deftheorem Def16 defines `21 MCART_1:def 16 :
for b1 being set holds b1 `21 = (b1 `2 ) `1 ;

:: deftheorem Def17 defines `22 MCART_1:def 17 :
for b1 being set holds b1 `22 = (b1 `2 ) `2 ;

theorem Th89: :: MCART_1:89
for b1, b2, b3, b4, b5, b6 being set holds
( [[b1,b2],b3] `11 = b1 & [[b1,b2],b3] `12 = b2 & [b6,[b4,b5]] `21 = b4 & [b6,[b4,b5]] `22 = b5 )
proof end;