:: SUBSET_1 semantic presentation

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

registration
let x1 be set ;
cluster {a1} -> non empty ;
coherence
not {x1} is empty
by TARSKI:def 1;
let x2 be set ;
cluster {a1,a2} -> non empty ;
coherence
not {x1,x2} is empty
by TARSKI:def 2;
let x3 be set ;
cluster {a1,a2,a3} -> non empty ;
coherence
not {x1,x2,x3} is empty
by ENUMSET1:def 1;
let x4 be set ;
cluster {a1,a2,a3,a4} -> non empty ;
coherence
not {x1,x2,x3,x4} is empty
by ENUMSET1:def 2;
let x5 be set ;
cluster {a1,a2,a3,a4,a5} -> non empty ;
coherence
not {x1,x2,x3,x4,x5} is empty
by ENUMSET1:def 3;
let x6 be set ;
cluster {a1,a2,a3,a4,a5,a6} -> non empty ;
coherence
not {x1,x2,x3,x4,x5,x6} is empty
by ENUMSET1:def 4;
let x7 be set ;
cluster {a1,a2,a3,a4,a5,a6,a7} -> non empty ;
coherence
not {x1,x2,x3,x4,x5,x6,x7} is empty
by ENUMSET1:def 5;
let x8 be set ;
cluster {a1,a2,a3,a4,a5,a6,a7,a8} -> non empty ;
coherence
not {x1,x2,x3,x4,x5,x6,x7,x8} is empty
by ENUMSET1:def 6;
let x9 be set ;
cluster {a1,a2,a3,a4,a5,a6,a7,a8,a9} -> non empty ;
coherence
not {x1,x2,x3,x4,x5,x6,x7,x8,x9} is empty
by ENUMSET1:def 7;
let x10 be set ;
cluster {a1,a2,a3,a4,a5,a6,a7,a8,a9,a10} -> non empty ;
coherence
not {x1,x2,x3,x4,x5,x6,x7,x8,x9,x10} is empty
by ENUMSET1:def 8;
end;

definition
let X be set ;
canceled;
mode Element of c1 -> set means :Def2: :: SUBSET_1:def 2
it in X if not X is empty
otherwise it is empty;
existence
( ( not X is empty implies ex b1 being set st b1 in X ) & ( X 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 X being set
for b2 being set holds
( ( not X is empty implies ( b2 is Element of X iff b2 in X ) ) & ( X is empty implies ( b2 is Element of X iff b2 is empty ) ) );

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

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

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

registration
let X1 be non empty set , X2 be non empty set , X3 be non empty set ;
cluster [:a1,a2,a3:] -> non empty ;
coherence
not [:X1,X2,X3:] is empty
proof end;
end;

registration
let X1 be non empty set , X2 be non empty set , X3 be non empty set , X4 be non empty set ;
cluster [:a1,a2,a3,a4:] -> non empty ;
coherence
not [:X1,X2,X3,X4:] is empty
proof end;
end;

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

Lemma27: for E being set
for X being Subset of E
for x being set st x in X holds
x in E
proof end;

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

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

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

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

registration
let E be set ;
cluster {} a1 -> empty ;
coherence
{} E is empty
;
end;

theorem Th1: :: SUBSET_1:1
canceled;

theorem Th2: :: SUBSET_1:2
canceled;

theorem Th3: :: SUBSET_1:3
canceled;

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

theorem Th5: :: SUBSET_1:5
canceled;

theorem Th6: :: SUBSET_1:6
canceled;

theorem Th7: :: SUBSET_1:7
for E being set
for A, B being Subset of E st ( for x being Element of E st x in A holds
x in B ) holds
A c= B
proof end;

theorem Th8: :: SUBSET_1:8
for E being set
for A, B being Subset of E st ( for x being Element of E holds
( x in A iff x in B ) ) holds
A = B
proof end;

theorem Th9: :: SUBSET_1:9
canceled;

theorem Th10: :: SUBSET_1:10
for E being set
for A being Subset of E st A <> {} holds
ex x being Element of E st x in A
proof end;

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

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

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

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

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

definition
let E be set ;
let X be set ;
let A be Subset of E;
redefine func /\ as c2 /\ c3 -> Subset of a1;
coherence
X /\ A is Subset of E
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 E being set
for A, B, C being Subset of E st ( for x being Element of E holds
( x in A iff ( x in B or x in C ) ) ) holds
A = B \/ C
proof end;

theorem Th16: :: SUBSET_1:16
for E being set
for A, B, C being Subset of E st ( for x being Element of E holds
( x in A iff ( x in B & x in C ) ) ) holds
A = B /\ C
proof end;

theorem Th17: :: SUBSET_1:17
for E being set
for A, B, C being Subset of E st ( for x being Element of E holds
( x in A iff ( x in B & not x in C ) ) ) holds
A = B \ C
proof end;

theorem Th18: :: SUBSET_1:18
for E being set
for A, B, C being Subset of E st ( for x being Element of E holds
( x in A iff ( ( x in B & not x in C ) or ( x in C & not x in B ) ) ) ) holds
A = B \+\ C
proof end;

theorem Th19: :: SUBSET_1:19
canceled;

theorem Th20: :: SUBSET_1:20
canceled;

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

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

theorem Th23: :: SUBSET_1:23
canceled;

theorem Th24: :: SUBSET_1:24
canceled;

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

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

theorem Th27: :: SUBSET_1:27
canceled;

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

theorem Th29: :: SUBSET_1:29
for E being set
for A, B being Subset of E holds (A \/ B) ` = (A ` ) /\ (B ` ) by XBOOLE_1:53;

theorem Th30: :: SUBSET_1:30
for E being set
for A, B being Subset of E holds (A /\ B) ` = (A ` ) \/ (B ` ) by XBOOLE_1:54;

theorem Th31: :: SUBSET_1:31
for E being set
for A, B being Subset of E holds
( A c= B iff B ` c= A ` )
proof end;

theorem Th32: :: SUBSET_1:32
for E being set
for A, B being Subset of E holds A \ B = A /\ (B ` )
proof end;

theorem Th33: :: SUBSET_1:33
for E being set
for A, B being Subset of E holds (A \ B) ` = (A ` ) \/ B
proof end;

theorem Th34: :: SUBSET_1:34
for E being set
for A, B being Subset of E holds (A \+\ B) ` = (A /\ B) \/ ((A ` ) /\ (B ` ))
proof end;

theorem Th35: :: SUBSET_1:35
for E being set
for A, B being Subset of E st A c= B ` holds
B c= A `
proof end;

theorem Th36: :: SUBSET_1:36
for E being set
for A, B being Subset of E st A ` c= B holds
B ` c= A
proof end;

theorem Th37: :: SUBSET_1:37
canceled;

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

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

theorem Th40: :: SUBSET_1:40
for E, X being set
for A being Subset of E st X c= A & X c= A ` holds
X = {}
proof end;

theorem Th41: :: SUBSET_1:41
for E being set
for A, B being Subset of E holds (A \/ B) ` c= A `
proof end;

theorem Th42: :: SUBSET_1:42
for E being set
for A, B being Subset of E holds A ` c= (A /\ B) `
proof end;

theorem Th43: :: SUBSET_1:43
for E being set
for A, B being Subset of E holds
( A misses B iff A c= B ` )
proof end;

theorem Th44: :: SUBSET_1:44
for E being set
for A, B being Subset of E holds
( A misses B ` iff A c= B )
proof end;

theorem Th45: :: SUBSET_1:45
canceled;

theorem Th46: :: SUBSET_1:46
for E being set
for A, B being Subset of E st A misses B & A ` misses B ` holds
A = B `
proof end;

theorem Th47: :: SUBSET_1:47
for E being set
for A, B, C being Subset of E st A c= B & C misses B holds
A c= C `
proof end;

theorem Th48: :: SUBSET_1:48
for E being set
for A, B being Subset of E st ( for a being Element of A holds a in B ) holds
A c= B
proof end;

theorem Th49: :: SUBSET_1:49
for E being set
for A being Subset of E st ( for x being Element of E holds x in A ) holds
E = A
proof end;

theorem Th50: :: SUBSET_1:50
for E being set st E <> {} holds
for B being Subset of E
for x being Element of E st not x in B holds
x in B `
proof end;

theorem Th51: :: SUBSET_1:51
for E being set
for A, B being Subset of E st ( for x being Element of E holds
( x in A iff not x in B ) ) holds
A = B `
proof end;

theorem Th52: :: SUBSET_1:52
for E being set
for A, B being Subset of E st ( for x being Element of E holds
( not x in A iff x in B ) ) holds
A = B `
proof end;

theorem Th53: :: SUBSET_1:53
for E being set
for A, B being Subset of E st ( for x being Element of E holds
( ( x in A & not x in B ) or ( x in B & not x in A ) ) ) holds
A = B `
proof end;

theorem Th54: :: SUBSET_1:54
for E, x being set
for A being Subset of E st x in A ` holds
not x in A by XBOOLE_0:def 4;

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

theorem Th56: :: SUBSET_1:56
for X being set
for x1, x2 being Element of X st X <> {} holds
{x1,x2} is Subset of X
proof end;

theorem Th57: :: SUBSET_1:57
for X being set
for x1, x2, x3 being Element of X st X <> {} holds
{x1,x2,x3} is Subset of X
proof end;

theorem Th58: :: SUBSET_1:58
for X being set
for x1, x2, x3, x4 being Element of X st X <> {} holds
{x1,x2,x3,x4} is Subset of X
proof end;

theorem Th59: :: SUBSET_1:59
for X being set
for x1, x2, x3, x4, x5 being Element of X st X <> {} holds
{x1,x2,x3,x4,x5} is Subset of X
proof end;

theorem Th60: :: SUBSET_1:60
for X being set
for x1, x2, x3, x4, x5, x6 being Element of X st X <> {} holds
{x1,x2,x3,x4,x5,x6} is Subset of X
proof end;

theorem Th61: :: SUBSET_1:61
for X being set
for x1, x2, x3, x4, x5, x6, x7 being Element of X st X <> {} holds
{x1,x2,x3,x4,x5,x6,x7} is Subset of X
proof end;

theorem Th62: :: SUBSET_1:62
for X being set
for x1, x2, x3, x4, x5, x6, x7, x8 being Element of X st X <> {} holds
{x1,x2,x3,x4,x5,x6,x7,x8} is Subset of X
proof end;

theorem Th63: :: SUBSET_1:63
for x, X being set st x in X holds
{x} is Subset of X
proof end;

scheme :: SUBSET_1:sch 45
s45{ F1() -> set , P1[ set ] } :
ex X being Subset of F1() st
for x being set holds
( x in X iff ( x in F1() & P1[x] ) )
proof end;

scheme :: SUBSET_1:sch 47
s47{ F1() -> set , P1[ set ] } :
for X1, X2 being Subset of F1() st ( for y being Element of F1() holds
( y in X1 iff P1[y] ) ) & ( for y being Element of F1() holds
( y in X2 iff P1[y] ) ) holds
X1 = X2
proof end;

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

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

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

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

Lemma49: for X, Y being set st ( for x being set st x in X holds
x in Y ) holds
X is Subset of Y
proof end;

Lemma50: for x, E being set
for A being Subset of E st x in A holds
x is Element of E
proof end;

scheme :: SUBSET_1:sch 45
s45{ F1() -> non empty set , P1[ set ] } :
ex B being Subset of F1() st
for x being Element of F1() holds
( x in B iff P1[x] )
proof end;

scheme :: SUBSET_1:sch 51
s51{ F1() -> set , F2() -> Subset of F1(), F3() -> Subset of F1(), P1[ set ] } :
F2() = F3()
provided
E20: for X being Element of F1() holds
( X in F2() iff P1[X] ) and
E21: for X being Element of F1() holds
( X in F3() iff P1[X] )
proof end;

theorem Th64: :: SUBSET_1:64
for E being set
for A, B being Subset of E st A ` = B ` holds
A = B
proof end;