:: MCART_2 semantic presentation

Lemma1: 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;

Lemma2: 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;

Lemma3: 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;

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

theorem Th2: :: MCART_2:2
for b1 being set holds
not ( b1 <> {} & ( for b2 being set holds
not ( b2 in b1 & ( for b3, b4, b5, b6, b7, b8, b9 being set holds
( b3 in b4 & b4 in b5 & b5 in b6 & b6 in b7 & b7 in b8 & b8 in b9 & b9 in b2 implies b3 misses b1 ) ) ) ) )
proof end;

definition
let c1, c2, c3, c4, c5 be set ;
func [c1,c2,c3,c4,c5] -> set equals :: MCART_2:def 1
[[a1,a2,a3,a4],a5];
correctness
coherence
[[c1,c2,c3,c4],c5] is set
;
;
end;

:: deftheorem Def1 defines [ MCART_2:def 1 :
for b1, b2, b3, b4, b5 being set holds [b1,b2,b3,b4,b5] = [[b1,b2,b3,b4],b5];

theorem Th3: :: MCART_2:3
for b1, b2, b3, b4, b5 being set holds [b1,b2,b3,b4,b5] = [[[[b1,b2],b3],b4],b5]
proof end;

theorem Th4: :: MCART_2:4
canceled;

theorem Th5: :: MCART_2:5
for b1, b2, b3, b4, b5 being set holds [b1,b2,b3,b4,b5] = [[b1,b2,b3],b4,b5]
proof end;

theorem Th6: :: MCART_2:6
for b1, b2, b3, b4, b5 being set holds [b1,b2,b3,b4,b5] = [[b1,b2],b3,b4,b5]
proof end;

theorem Th7: :: MCART_2:7
for b1, b2, b3, b4, b5, b6, b7, b8, b9, b10 being set holds
( [b1,b2,b3,b4,b5] = [b6,b7,b8,b9,b10] implies ( b1 = b6 & b2 = b7 & b3 = b8 & b4 = b9 & b5 = b10 ) )
proof end;

theorem Th8: :: MCART_2:8
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
not ( ( b3 in b1 or b4 in b1 ) & b2 = [b3,b4,b5,b6,b7] ) ) ) ) )
proof end;

definition
let c1, c2, c3, c4, c5 be set ;
func [:c1,c2,c3,c4,c5:] -> set equals :: MCART_2:def 2
[:[:a1,a2,a3,a4:],a5:];
correctness
coherence
[:[:c1,c2,c3,c4:],c5:] is set
;
;
end;

:: deftheorem Def2 defines [: MCART_2:def 2 :
for b1, b2, b3, b4, b5 being set holds [:b1,b2,b3,b4,b5:] = [:[:b1,b2,b3,b4:],b5:];

theorem Th9: :: MCART_2:9
for b1, b2, b3, b4, b5 being set holds [:b1,b2,b3,b4,b5:] = [:[:[:[:b1,b2:],b3:],b4:],b5:]
proof end;

theorem Th10: :: MCART_2:10
canceled;

theorem Th11: :: MCART_2:11
for b1, b2, b3, b4, b5 being set holds [:b1,b2,b3,b4,b5:] = [:[:b1,b2,b3:],b4,b5:]
proof end;

theorem Th12: :: MCART_2:12
for b1, b2, b3, b4, b5 being set holds [:b1,b2,b3,b4,b5:] = [:[:b1,b2:],b3,b4,b5:]
proof end;

theorem Th13: :: MCART_2:13
for b1, b2, b3, b4, b5 being set holds
( ( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} & b5 <> {} ) iff [:b1,b2,b3,b4,b5:] <> {} )
proof end;

theorem Th14: :: MCART_2:14
for b1, b2, b3, b4, b5, b6, b7, b8, b9, b10 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} & b5 <> {} & [:b1,b2,b3,b4,b5:] = [:b6,b7,b8,b9,b10:] implies ( b1 = b6 & b2 = b7 & b3 = b8 & b4 = b9 & b5 = b10 ) )
proof end;

theorem Th15: :: MCART_2:15
for b1, b2, b3, b4, b5, b6, b7, b8, b9, b10 being set holds
( [:b1,b2,b3,b4,b5:] <> {} & [:b1,b2,b3,b4,b5:] = [:b6,b7,b8,b9,b10:] implies ( b1 = b6 & b2 = b7 & b3 = b8 & b4 = b9 & b5 = b10 ) )
proof end;

theorem Th16: :: MCART_2:16
for b1, b2 being set holds
( [:b1,b1,b1,b1,b1:] = [:b2,b2,b2,b2,b2:] implies b1 = b2 )
proof end;

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

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

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

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

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

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

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

theorem Th18: :: MCART_2:18
for b1, b2, b3, b4, b5 being set holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} & b5 <> {} implies for b6 being Element of [:b1,b2,b3,b4,b5:]
for b7, b8, b9, b10, b11 being set holds
( b6 = [b7,b8,b9,b10,b11] implies ( b6 `1 = b7 & b6 `2 = b8 & b6 `3 = b9 & b6 `4 = b10 & b6 `5 = b11 ) ) ) by Def3, Def4, Def5, Def6, Def7;

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

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

theorem Th21: :: MCART_2:21
for b1, b2, b3, b4, b5 being set holds
( not ( not b1 c= [:b1,b2,b3,b4,b5:] & not b1 c= [:b2,b3,b4,b5,b1:] & not b1 c= [:b3,b4,b5,b1,b2:] & not b1 c= [:b4,b5,b1,b2,b3:] & not b1 c= [:b5,b1,b2,b3,b4:] ) implies b1 = {} )
proof end;

theorem Th22: :: MCART_2:22
for b1, b2, b3, b4, b5, b6, b7, b8, b9, b10 being set holds
( [:b1,b2,b3,b4,b5:] meets [:b6,b7,b8,b9,b10:] implies ( b1 meets b6 & b2 meets b7 & b3 meets b8 & b4 meets b9 & b5 meets b10 ) )
proof end;

theorem Th23: :: MCART_2:23
for b1, b2, b3, b4, b5 being set holds [:{b1},{b2},{b3},{b4},{b5}:] = {[b1,b2,b3,b4,b5]}
proof end;

theorem Th24: :: MCART_2:24
for b1, b2, b3, b4, b5 being set
for b6 being Element of [:b1,b2,b3,b4,b5:] holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} & b5 <> {} implies for b7, b8, b9, b10, b11 being set holds
( b6 = [b7,b8,b9,b10,b11] implies ( b6 `1 = b7 & b6 `2 = b8 & b6 `3 = b9 & b6 `4 = b10 & b6 `5 = b11 ) ) ) by Def3, Def4, Def5, Def6, Def7;

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

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

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

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

theorem Th29: :: MCART_2:29
for b1, b2, b3, b4, b5, b6 being set
for b7 being Element of [:b1,b2,b3,b4,b5:] holds
( b1 <> {} & b2 <> {} & b3 <> {} & b4 <> {} & b5 <> {} & ( for b8 being Element of b1
for b9 being Element of b2
for b10 being Element of b3
for b11 being Element of b4
for b12 being Element of b5 holds
( b7 = [b8,b9,b10,b11,b12] implies b6 = b12 ) ) implies b6 = b7 `5 )
proof end;

theorem Th30: :: MCART_2:30
for b1, b2, b3, b4, b5, b6 being set holds
not ( b1 in [:b2,b3,b4,b5,b6:] & ( for b7, b8, b9, b10, b11 being set holds
not ( b7 in b2 & b8 in b3 & b9 in b4 & b10 in b5 & b11 in b6 & b1 = [b7,b8,b9,b10,b11] ) ) )
proof end;

theorem Th31: :: MCART_2:31
for b1, b2, b3, b4, b5, b6, b7, b8, b9, b10 being set holds
( [b1,b2,b3,b4,b5] in [:b6,b7,b8,b9,b10:] iff ( b1 in b6 & b2 in b7 & b3 in b8 & b4 in b9 & b5 in b10 ) )
proof end;

theorem Th32: :: MCART_2:32
for b1, b2, b3, b4, b5, b6 being set holds
( ( for b7 being set holds
( b7 in b1 iff ex b8, b9, b10, b11, b12 being set st
( b8 in b2 & b9 in b3 & b10 in b4 & b11 in b5 & b12 in b6 & b7 = [b8,b9,b10,b11,b12] ) ) ) implies b1 = [:b2,b3,b4,b5,b6:] )
proof end;

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

theorem Th34: :: MCART_2:34
for b1, b2, b3, b4, b5 being set
for b6 being Subset of b1
for b7 being Subset of b2
for b8 being Subset of b3
for b9 being Subset of b4
for b10 being Subset of b5
for b11 being Element of [:b1,b2,b3,b4,b5:] holds
( b11 in [:b6,b7,b8,b9,b10:] implies ( b11 `1 in b6 & b11 `2 in b7 & b11 `3 in b8 & b11 `4 in b9 & b11 `5 in b10 ) )
proof end;

theorem Th35: :: MCART_2:35
for b1, b2, b3, b4, b5, b6, b7, b8, b9, b10 being set holds
( b1 c= b2 & b3 c= b4 & b5 c= b6 & b7 c= b8 & b9 c= b10 implies [:b1,b3,b5,b7,b9:] c= [:b2,b4,b6,b8,b10:] )
proof end;

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

theorem Th36: :: MCART_2:36
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] ) by Lemma1;

theorem Th37: :: MCART_2:37
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] ) by Lemma2;

theorem Th38: :: MCART_2:38
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] ) by Lemma3;