:: 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;
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 c1 is empty implies ex b1 being set st b1 in c1 ) & ( c1 is empty implies ex b1 being set st 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 of a1 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 st b3 in b2 holds
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 st ( for b4 being Element of b1 st b4 in b2 holds
b4 in b3 ) holds
b2 c= b3
proof end;

theorem Th8: :: SUBSET_1:8
for b1 being set
for b2, b3 being Subset of b1 st ( for b4 being Element of b1 holds
( b4 in b2 iff b4 in b3 ) ) holds
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 st b2 <> {} holds
ex b3 being Element of b1 st 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 st b1 = c1 \ b2 holds
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;
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;

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 st ( for b5 being Element of b1 holds
( b5 in b2 iff ( b5 in b3 or b5 in b4 ) ) ) holds
b2 = b3 \/ b4
proof end;

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

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

theorem Th18: :: SUBSET_1:18
for b1 being set
for b2, b3, b4 being Subset of b1 st ( for b5 being Element of b1 holds
( b5 in b2 iff ( ( b5 in b3 & not b5 in b4 ) or ( b5 in b4 & not b5 in b3 ) ) ) ) holds
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 st b2 c= b3 ` holds
b3 c= b2 `
proof end;

theorem Th36: :: SUBSET_1:36
for b1 being set
for b2, b3 being Subset of b1 st b2 ` c= b3 holds
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 st b2 c= b3 & b2 c= b3 ` holds
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 st b2 misses b3 & b2 ` misses b3 ` holds
b2 = b3 `
proof end;

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

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

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

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

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

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

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

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

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

theorem Th56: :: SUBSET_1:56
for b1 being set
for b2, b3 being Element of b1 st b1 <> {} holds
{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 st b1 <> {} holds
{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 st b1 <> {} holds
{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 st b1 <> {} holds
{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 st b1 <> {} holds
{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 st b1 <> {} holds
{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 st b1 <> {} holds
{b2,b3,b4,b5,b6,b7,b8,b9} is Subset of b1
proof end;

theorem Th63: :: SUBSET_1:63
for b1, b2 being set st b1 in b2 holds
{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() st ( 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] ) ) holds
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 E11: contradiction ;
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 E11;
end;

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

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

Lemma12: for b1, b2 being set
for b3 being Subset of b2 st b1 in b3 holds
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
E13: for b1 being Element of F1() holds
( b1 in F2() iff P1[b1] ) and
E14: for b1 being Element of F1() holds
( b1 in F3() iff P1[b1] )
proof end;