:: SUBSET_1 semantic presentation

registration
let c1 be set ;
cluster bool a1 -> non empty ;
coherence
not bool c1 is empty
by ZFMISC_1:def 1;
end;

registration
let c1 be set ;
cluster {a1} -> non empty ;
coherence
not {c1} is empty
by TARSKI:def 1;
let c2 be set ;
cluster {a1,a2} -> non empty ;
coherence
not {c1,c2} is empty
by TARSKI:def 2;
let c3 be set ;
cluster {a1,a2,a3} -> non empty ;
coherence
not {c1,c2,c3} is empty
by ENUMSET1:def 1;
let c4 be set ;
cluster {a1,a2,a3,a4} -> non empty ;
coherence
not {c1,c2,c3,c4} is empty
by ENUMSET1:def 2;
let c5 be set ;
cluster {a1,a2,a3,a4,a5} -> non empty ;
coherence
not {c1,c2,c3,c4,c5} is empty
by ENUMSET1:def 3;
let c6 be set ;
cluster {a1,a2,a3,a4,a5,a6} -> non empty ;
coherence
not {c1,c2,c3,c4,c5,c6} is empty
by ENUMSET1:def 4;
let c7 be set ;
cluster {a1,a2,a3,a4,a5,a6,a7} -> non empty ;
coherence
not {c1,c2,c3,c4,c5,c6,c7} is empty
by ENUMSET1:def 5;
let c8 be set ;
cluster {a1,a2,a3,a4,a5,a6,a7,a8} -> non empty ;
coherence
not {c1,c2,c3,c4,c5,c6,c7,c8} is empty
by ENUMSET1:def 6;
let c9 be set ;
cluster {a1,a2,a3,a4,a5,a6,a7,a8,a9} -> non empty ;
coherence
not {c1,c2,c3,c4,c5,c6,c7,c8,c9} is empty
by ENUMSET1:def 7;
let c10 be set ;
cluster {a1,a2,a3,a4,a5,a6,a7,a8,a9,a10} -> non empty ;
coherence
not {c1,c2,c3,c4,c5,c6,c7,c8,c9,c10} is empty
by ENUMSET1:def 8;
end;

definition
let c1 be set ;
canceled;
mode Element of c1 -> set means :Def2: :: SUBSET_1:def 2
a2 in a1 if not a1 is empty
otherwise a2 is empty;
existence
( not ( not c1 is empty & ( for b1 being set holds
not b1 in c1 ) ) & not ( c1 is empty & ( for b1 being set holds
not b1 is empty ) ) )
by XBOOLE_0:def 1;
consistency
for b1 being set holds
verum
;
end;

:: deftheorem Def1 SUBSET_1:def 1 :
canceled;

:: deftheorem Def2 defines Element SUBSET_1:def 2 :
for b1 being set
for b2 being set holds
( ( not b1 is empty implies ( b2 is Element of b1 iff b2 in b1 ) ) & ( b1 is empty implies ( b2 is Element of b1 iff b2 is empty ) ) );

definition
let c1 be set ;
mode Subset is Element of bool a1;
end;

registration
let c1 be non empty set ;
cluster non empty Element of bool a1;
existence
not for b1 being Subset of c1 holds b1 is empty
proof end;
end;

registration
let c1, c2 be non empty set ;
cluster [:a1,a2:] -> non empty ;
coherence
not [:c1,c2:] is empty
proof end;
end;

registration
let c1, c2, c3 be non empty set ;
cluster [:a1,a2,a3:] -> non empty ;
coherence
not [:c1,c2,c3:] is empty
proof end;
end;

registration
let c1, c2, c3, c4 be non empty set ;
cluster [:a1,a2,a3,a4:] -> non empty ;
coherence
not [:c1,c2,c3,c4:] is empty
proof end;
end;

definition
let c1 be non empty set ;
let c2 be non empty Subset of c1;
redefine mode Element as Element of c2 -> Element of a1;
coherence
for b1 being Element of c2 holds
b1 is Element of c1
proof end;
end;

Lemma2: for b1 being set
for b2 being Subset of b1
for b3 being set holds
( b3 in b2 implies b3 in b1 )
proof end;

registration
let c1 be set ;
cluster empty Element of bool a1;
existence
ex b1 being Subset of c1 st b1 is empty
proof end;
end;

definition
let c1 be set ;
func {} c1 -> empty Subset of a1 equals :: SUBSET_1:def 3
{} ;
coherence
{} is empty Subset of c1
proof end;
correctness
;
func [#] c1 -> Subset of a1 equals :: SUBSET_1:def 4
a1;
coherence
c1 is Subset of c1
proof end;
correctness
;
end;

:: deftheorem Def3 defines {} SUBSET_1:def 3 :
for b1 being set holds {} b1 = {} ;

:: deftheorem Def4 defines [#] SUBSET_1:def 4 :
for b1 being set holds [#] b1 = b1;

theorem Th1: :: SUBSET_1:1
canceled;

theorem Th2: :: SUBSET_1:2
canceled;

theorem Th3: :: SUBSET_1:3
canceled;

theorem Th4: :: SUBSET_1:4
for b1 being set holds
{} is Subset of b1
proof end;

theorem Th5: :: SUBSET_1:5
canceled;

theorem Th6: :: SUBSET_1:6
canceled;

theorem Th7: :: SUBSET_1:7
for b1 being set
for b2, b3 being Subset of b1 holds
( ( for b4 being Element of b1 holds
( b4 in b2 implies b4 in b3 ) ) implies b2 c= b3 )
proof end;

theorem Th8: :: SUBSET_1:8
for b1 being set
for b2, b3 being Subset of b1 holds
( ( for b4 being Element of b1 holds
( b4 in b2 iff b4 in b3 ) ) implies b2 = b3 )
proof end;

theorem Th9: :: SUBSET_1:9
canceled;

theorem Th10: :: SUBSET_1:10
for b1 being set
for b2 being Subset of b1 holds
not ( b2 <> {} & ( for b3 being Element of b1 holds
not b3 in b2 ) )
proof end;

definition
let c1 be set ;
let c2 be Subset of c1;
func c2 ` -> Subset of a1 equals :: SUBSET_1:def 5
a1 \ a2;
coherence
c1 \ c2 is Subset of c1
proof end;
correctness
;
involutiveness
for b1, b2 being Subset of c1 holds
( b1 = c1 \ b2 implies b2 = c1 \ b1 )
proof end;
let c3 be Subset of c1;
redefine func \/ as c2 \/ c3 -> Subset of a1;
coherence
c2 \/ c3 is Subset of c1
proof end;
redefine func \+\ as c2 \+\ c3 -> Subset of a1;
coherence
c2 \+\ c3 is Subset of c1
proof end;
end;

:: deftheorem Def5 defines ` SUBSET_1:def 5 :
for b1 being set
for b2 being Subset of b1 holds b2 ` = b1 \ b2;

definition
let c1, c2 be set ;
redefine func \ as c1 \ c2 -> Subset of a1;
coherence
c1 \ c2 is Subset of c1
proof end;
end;

definition
let c1 be set ;
let c2 be Subset of c1;
let c3 be set ;
redefine func \ as c2 \ c3 -> Subset of a1;
coherence
c2 \ c3 is Subset of c1
proof end;
end;

definition
let c1 be set ;
let c2 be Subset of c1;
let c3 be set ;
redefine func /\ as c2 /\ c3 -> Subset of a1;
coherence
c2 /\ c3 is Subset of c1
proof end;
end;

definition
let c1, c2 be set ;
let c3 be Subset of c1;
redefine func /\ as c2 /\ c3 -> Subset of a1;
coherence
c2 /\ c3 is Subset of c1
proof end;
end;

theorem Th11: :: SUBSET_1:11
canceled;

theorem Th12: :: SUBSET_1:12
canceled;

theorem Th13: :: SUBSET_1:13
canceled;

theorem Th14: :: SUBSET_1:14
canceled;

theorem Th15: :: SUBSET_1:15
for b1 being set
for b2, b3, b4 being Subset of b1 holds
( ( for b5 being Element of b1 holds
( b5 in b2 iff ( b5 in b3 or b5 in b4 ) ) ) implies b2 = b3 \/ b4 )
proof end;

theorem Th16: :: SUBSET_1:16
for b1 being set
for b2, b3, b4 being Subset of b1 holds
( ( for b5 being Element of b1 holds
( b5 in b2 iff ( b5 in b3 & b5 in b4 ) ) ) implies b2 = b3 /\ b4 )
proof end;

theorem Th17: :: SUBSET_1:17
for b1 being set
for b2, b3, b4 being Subset of b1 holds
( ( for b5 being Element of b1 holds
( b5 in b2 iff ( b5 in b3 & not b5 in b4 ) ) ) implies b2 = b3 \ b4 )
proof end;

theorem Th18: :: SUBSET_1:18
for b1 being set
for b2, b3, b4 being Subset of b1 holds
( ( for b5 being Element of b1 holds
( b5 in b2 iff not ( b5 in b3 iff b5 in b4 ) ) ) implies b2 = b3 \+\ b4 )
proof end;

theorem Th19: :: SUBSET_1:19
canceled;

theorem Th20: :: SUBSET_1:20
canceled;

theorem Th21: :: SUBSET_1:21
for b1 being set holds {} b1 = ([#] b1) ` by XBOOLE_1:37;

theorem Th22: :: SUBSET_1:22
for b1 being set holds [#] b1 = ({} b1) ` ;

theorem Th23: :: SUBSET_1:23
canceled;

theorem Th24: :: SUBSET_1:24
canceled;

theorem Th25: :: SUBSET_1:25
for b1 being set
for b2 being Subset of b1 holds b2 \/ (b2 ` ) = [#] b1
proof end;

theorem Th26: :: SUBSET_1:26
for b1 being set
for b2 being Subset of b1 holds b2 misses b2 ` by XBOOLE_1:79;

theorem Th27: :: SUBSET_1:27
canceled;

theorem Th28: :: SUBSET_1:28
for b1 being set
for b2 being Subset of b1 holds b2 \/ ([#] b1) = [#] b1
proof end;

theorem Th29: :: SUBSET_1:29
for b1 being set
for b2, b3 being Subset of b1 holds (b2 \/ b3) ` = (b2 ` ) /\ (b3 ` ) by XBOOLE_1:53;

theorem Th30: :: SUBSET_1:30
for b1 being set
for b2, b3 being Subset of b1 holds (b2 /\ b3) ` = (b2 ` ) \/ (b3 ` ) by XBOOLE_1:54;

theorem Th31: :: SUBSET_1:31
for b1 being set
for b2, b3 being Subset of b1 holds
( b2 c= b3 iff b3 ` c= b2 ` )
proof end;

theorem Th32: :: SUBSET_1:32
for b1 being set
for b2, b3 being Subset of b1 holds b2 \ b3 = b2 /\ (b3 ` )
proof end;

theorem Th33: :: SUBSET_1:33
for b1 being set
for b2, b3 being Subset of b1 holds (b2 \ b3) ` = (b2 ` ) \/ b3
proof end;

theorem Th34: :: SUBSET_1:34
for b1 being set
for b2, b3 being Subset of b1 holds (b2 \+\ b3) ` = (b2 /\ b3) \/ ((b2 ` ) /\ (b3 ` ))
proof end;

theorem Th35: :: SUBSET_1:35
for b1 being set
for b2, b3 being Subset of b1 holds
( b2 c= b3 ` implies b3 c= b2 ` )
proof end;

theorem Th36: :: SUBSET_1:36
for b1 being set
for b2, b3 being Subset of b1 holds
( b2 ` c= b3 implies b3 ` c= b2 )
proof end;

theorem Th37: :: SUBSET_1:37
canceled;

theorem Th38: :: SUBSET_1:38
for b1 being set
for b2 being Subset of b1 holds
( b2 c= b2 ` iff b2 = {} b1 )
proof end;

theorem Th39: :: SUBSET_1:39
for b1 being set
for b2 being Subset of b1 holds
( b2 ` c= b2 iff b2 = [#] b1 )
proof end;

theorem Th40: :: SUBSET_1:40
for b1, b2 being set
for b3 being Subset of b1 holds
( b2 c= b3 & b2 c= b3 ` implies b2 = {} )
proof end;

theorem Th41: :: SUBSET_1:41
for b1 being set
for b2, b3 being Subset of b1 holds (b2 \/ b3) ` c= b2 `
proof end;

theorem Th42: :: SUBSET_1:42
for b1 being set
for b2, b3 being Subset of b1 holds b2 ` c= (b2 /\ b3) `
proof end;

theorem Th43: :: SUBSET_1:43
for b1 being set
for b2, b3 being Subset of b1 holds
( b2 misses b3 iff b2 c= b3 ` )
proof end;

theorem Th44: :: SUBSET_1:44
for b1 being set
for b2, b3 being Subset of b1 holds
( b2 misses b3 ` iff b2 c= b3 )
proof end;

theorem Th45: :: SUBSET_1:45
canceled;

theorem Th46: :: SUBSET_1:46
for b1 being set
for b2, b3 being Subset of b1 holds
( b2 misses b3 & b2 ` misses b3 ` implies b2 = b3 ` )
proof end;

theorem Th47: :: SUBSET_1:47
for b1 being set
for b2, b3, b4 being Subset of b1 holds
( b2 c= b3 & b4 misses b3 implies b2 c= b4 ` )
proof end;

theorem Th48: :: SUBSET_1:48
for b1 being set
for b2, b3 being Subset of b1 holds
( ( for b4 being Element of b2 holds b4 in b3 ) implies b2 c= b3 )
proof end;

theorem Th49: :: SUBSET_1:49
for b1 being set
for b2 being Subset of b1 holds
( ( for b3 being Element of b1 holds b3 in b2 ) implies b1 = b2 )
proof end;

theorem Th50: :: SUBSET_1:50
for b1 being set holds
( b1 <> {} implies for b2 being Subset of b1
for b3 being Element of b1 holds
( not b3 in b2 implies b3 in b2 ` ) )
proof end;

theorem Th51: :: SUBSET_1:51
for b1 being set
for b2, b3 being Subset of b1 holds
( ( for b4 being Element of b1 holds
( b4 in b2 iff not b4 in b3 ) ) implies b2 = b3 ` )
proof end;

theorem Th52: :: SUBSET_1:52
for b1 being set
for b2, b3 being Subset of b1 holds
( ( for b4 being Element of b1 holds
( not b4 in b2 iff b4 in b3 ) ) implies b2 = b3 ` )
proof end;

theorem Th53: :: SUBSET_1:53
for b1 being set
for b2, b3 being Subset of b1 holds
( ( for b4 being Element of b1 holds
not ( b4 in b2 iff b4 in b3 ) ) implies b2 = b3 ` )
proof end;

theorem Th54: :: SUBSET_1:54
for b1, b2 being set
for b3 being Subset of b1 holds
not ( b2 in b3 ` & b2 in b3 ) by XBOOLE_0:def 4;

theorem Th55: :: SUBSET_1:55
for b1 being set
for b2 being Element of b1 holds
( b1 <> {} implies {b2} is Subset of b1 )
proof end;

theorem Th56: :: SUBSET_1:56
for b1 being set
for b2, b3 being Element of b1 holds
( b1 <> {} implies {b2,b3} is Subset of b1 )
proof end;

theorem Th57: :: SUBSET_1:57
for b1 being set
for b2, b3, b4 being Element of b1 holds
( b1 <> {} implies {b2,b3,b4} is Subset of b1 )
proof end;

theorem Th58: :: SUBSET_1:58
for b1 being set
for b2, b3, b4, b5 being Element of b1 holds
( b1 <> {} implies {b2,b3,b4,b5} is Subset of b1 )
proof end;

theorem Th59: :: SUBSET_1:59
for b1 being set
for b2, b3, b4, b5, b6 being Element of b1 holds
( b1 <> {} implies {b2,b3,b4,b5,b6} is Subset of b1 )
proof end;

theorem Th60: :: SUBSET_1:60
for b1 being set
for b2, b3, b4, b5, b6, b7 being Element of b1 holds
( b1 <> {} implies {b2,b3,b4,b5,b6,b7} is Subset of b1 )
proof end;

theorem Th61: :: SUBSET_1:61
for b1 being set
for b2, b3, b4, b5, b6, b7, b8 being Element of b1 holds
( b1 <> {} implies {b2,b3,b4,b5,b6,b7,b8} is Subset of b1 )
proof end;

theorem Th62: :: SUBSET_1:62
for b1 being set
for b2, b3, b4, b5, b6, b7, b8, b9 being Element of b1 holds
( b1 <> {} implies {b2,b3,b4,b5,b6,b7,b8,b9} is Subset of b1 )
proof end;

theorem Th63: :: SUBSET_1:63
for b1, b2 being set holds
( b1 in b2 implies {b1} is Subset of b2 )
proof end;

scheme :: SUBSET_1:sch 1
s1{ F1() -> set , P1[ set ] } :
ex b1 being Subset of F1() st
for b2 being set holds
( b2 in b1 iff ( b2 in F1() & P1[b2] ) )
proof end;

scheme :: SUBSET_1:sch 2
s2{ F1() -> set , P1[ set ] } :
for b1, b2 being Subset of F1() holds
( ( for b3 being Element of F1() holds
( b3 in b1 iff P1[b3] ) ) & ( for b3 being Element of F1() holds
( b3 in b2 iff P1[b3] ) ) implies b1 = b2 )
proof end;

definition
let c1, c2 be non empty set ;
redefine pred misses as c1 misses c2;
irreflexivity
for b1 being non empty set holds
not b1 misses b1
proof end;
end;

definition
let c1, c2 be non empty set ;
redefine pred misses as c1 meets c2;
reflexivity
for b1 being non empty set holds
not b1 misses b1
proof end;
end;

definition
let c1 be set ;
assume E9: not verum ;
func choose c1 -> Element of a1 means :: SUBSET_1:def 6
verum;
correctness
existence
ex b1 being Element of c1 st
verum
;
uniqueness
for b1, b2 being Element of c1 holds b1 = b2
;
by E9;
end;

:: deftheorem Def6 defines choose SUBSET_1:def 6 :
for b1 being set holds
( not verum implies for b2 being Element of b1 holds
( b2 = choose b1 iff verum ) );

Lemma9: for b1, b2 being set holds
( ( for b3 being set holds
( b3 in b1 implies b3 in b2 ) ) implies b1 is Subset of b2 )
proof end;

Lemma10: for b1, b2 being set
for b3 being Subset of b2 holds
( b1 in b3 implies b1 is Element of b2 )
proof end;

scheme :: SUBSET_1:sch 3
s3{ F1() -> non empty set , P1[ set ] } :
ex b1 being Subset of F1() st
for b2 being Element of F1() holds
( b2 in b1 iff P1[b2] )
proof end;

scheme :: SUBSET_1:sch 4
s4{ F1() -> set , F2() -> Subset of F1(), F3() -> Subset of F1(), P1[ set ] } :
F2() = F3()
provided
E11: for b1 being Element of F1() holds
( b1 in F2() iff P1[b1] ) and E12: for b1 being Element of F1() holds
( b1 in F3() iff P1[b1] )
proof end;