### Boolean Domains

by
Andrzej Trybulec, and
Agata Darmochwal

Copyright (c) 1989 Association of Mizar Users

MML identifier: FINSUB_1
[ MML identifier index ]

```environ

vocabulary BOOLE, FINSET_1, FINSUB_1;
notation TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, FINSET_1;
constructors TARSKI, SUBSET_1, FINSET_1, XBOOLE_0;
clusters FINSET_1, SUBSET_1, XBOOLE_0, ZFMISC_1;
requirements SUBSET, BOOLE;
definitions TARSKI, XBOOLE_0;
theorems FINSET_1, TARSKI, ZFMISC_1, XBOOLE_0, XBOOLE_1;
schemes XBOOLE_0;

begin

:::::::::::::: Auxiliary theorems :::::::::::::::::::

reserve X,Y for set;

definition let IT be set;
attr IT is cup-closed means :Def1:
for X,Y being set st X in IT & Y in IT holds X \/ Y in IT;
attr IT is cap-closed means
for X,Y being set st X in IT & Y in IT holds X /\ Y in IT;
attr IT is diff-closed means :Def3:
for X,Y being set st X in IT & Y in IT holds X \ Y in IT;
end;

definition let IT be set;
attr IT is preBoolean means :Def4:
IT is cup-closed diff-closed;
end;

definition
cluster preBoolean -> cup-closed diff-closed set;
coherence by Def4;
cluster cup-closed diff-closed -> preBoolean set;
coherence by Def4;
end;

definition
cluster non empty cup-closed cap-closed diff-closed set;
existence
proof
take {{}};
thus {{}} is non empty;
thus {{}} is cup-closed
proof let X,Y be set;
assume X in {{}} & Y in {{}};
then X = {} & Y = {} by TARSKI:def 1;
hence X \/ Y in {{}} by TARSKI:def 1;
end;
thus {{}} is cap-closed
proof let X,Y be set;
assume X in {{}} & Y in {{}};
then X = {} & Y = {} by TARSKI:def 1;
hence X /\ Y in {{}} by TARSKI:def 1;
end;
thus {{}} is diff-closed
proof let X,Y be set;
assume X in {{}} & Y in {{}};
then X = {} & Y = {} by TARSKI:def 1;
hence X \ Y in {{}} by TARSKI:def 1;
end;
end;
end;

reserve A for non empty preBoolean set;

canceled 9;

theorem Th10:
for A being set holds A is preBoolean iff
for X,Y being set st X in A & Y in A holds X \/ Y in A & X \ Y in A
proof
let A be set;
hereby assume A is preBoolean;
then A1:  A is cup-closed diff-closed by Def4;
let X,Y be set; assume X in A & Y in A;
hence X \/ Y in A & X \ Y in A by A1,Def1,Def3;
end;
assume A2: for X,Y being set st X in A & Y in A holds X \/ Y in A & X \ Y in
A;
A3:A is cup-closed
proof
let X,Y be set; assume X in A & Y in A;
hence X \/ Y in A by A2;
end;
A is diff-closed
proof
let X,Y be set; assume X in A & Y in A;
hence X \ Y in A by A2;
end;
hence thesis by A3,Def4;
end;

definition let A; let X,Y be Element of A;
redefine func X \/ Y -> Element of A;
correctness by Th10;
func X \ Y -> Element of A;
correctness by Th10;
end;

canceled 2;

theorem
Th13: X is Element of A & Y is Element of A implies X /\ Y is Element of A
proof assume X is Element of A & Y is Element of A;
then reconsider X,Y as Element of A;
X /\ Y = X \ (X \ Y) by XBOOLE_1:48;
hence thesis;
end;

theorem
Th14: X is Element of A & Y is Element of A implies X \+\ Y is Element of A
proof assume X is Element of A & Y is Element of A;
then reconsider X,Y as Element of A;
X \+\ Y = (X \ Y) \/ (Y \ X) by XBOOLE_0:def 6;
hence thesis;
end;

theorem
for A being non empty set st
for X,Y being Element of A holds X \+\ Y in A & X \ Y in A
holds A is preBoolean
proof let A be non empty set such that
A1: for X,Y being Element of A holds X \+\ Y in A & X \ Y in A;
now let X,Y be set;
assume
A2:  X in A & Y in A;
then reconsider Z = Y \ X as Element of A by A1;
X \/ Y = X \+\ Z by XBOOLE_1:98;
hence X \/ Y in A by A1,A2;
thus X \ Y in A by A1,A2;
end;
hence thesis by Th10;
end;

theorem
for A being non empty set st
for X,Y being Element of A holds X \+\ Y in A & X /\ Y in A
holds A is preBoolean
proof let A be non empty set such that
A1: for X,Y being Element of A holds X \+\ Y in A & X /\ Y in A;
now let X,Y be set;
assume
A2:  X in A & Y in A;
then reconsider Z1 = X \+\ Y, Z2 = X /\ Y as Element of A by A1;
X \/ Y = Z1 \+\ Z2 by XBOOLE_1:94;
hence X \/ Y in A by A1;
X \ Y = X \+\ Z2 by XBOOLE_1:100;
hence X \ Y in A by A1,A2;
end;
hence thesis by Th10;
end;

theorem
for A being non empty set st
for X,Y being Element of A holds X \+\ Y in A & X \/ Y in A
holds A is preBoolean
proof let A be non empty set such that
A1: for X,Y being Element of A holds X \+\ Y in A & X \/ Y in A;
now let X,Y be set;
assume
A2: X in A & Y in A;
hence X \/ Y in A by A1;
reconsider Z1 = X \+\ Y, Z2 = X \/ Y as Element of A by A1,A2;
X /\ Y = Z1 \+\ Z2 by XBOOLE_1:95;
then reconsider Z = X /\ Y as Element of A by A1;
X \ Y = X \+\ Z by XBOOLE_1:100;
hence X \ Y in A by A1,A2;
end;
hence thesis by Th10;
end;

definition let A; let X,Y be Element of A;
redefine func X /\ Y -> Element of A;
coherence by Th13;
func X \+\ Y -> Element of A;
coherence by Th14;
end;

theorem Th18:
{} in A
proof consider x being Element of A;
x \ x = {} by XBOOLE_1:37;
hence thesis;
end;

canceled;

theorem
for A being set holds bool A is preBoolean
proof let A be set;
now let X,Y be set;
assume X in bool A & Y in bool A;
then reconsider X'=X,Y'=Y as Element of bool A;
X' \/ Y' in bool A & X' \ Y' in bool A;
hence X \/ Y in bool A & X \ Y in bool A;
end;
hence thesis by Th10;
end;

theorem
for A,B being non empty preBoolean set holds A /\ B is non empty preBoolean
proof let A,B be non empty preBoolean set;
{} in A & {} in B by Th18;
then reconsider C = A /\ B as non empty set by XBOOLE_0:def 3;
C is preBoolean
proof now let X,Y be set;
assume X in C & Y in C;
then A1:     X in A & Y in A & X in B & Y in B by XBOOLE_0:def 3;
then X \/ Y in A & X \/ Y in B by Th10;
hence X \/ Y in C by XBOOLE_0:def 3;
X \ Y in A & X \ Y in B by A1,Th10;
hence X \ Y in C by XBOOLE_0:def 3;
end;
hence thesis by Th10;
end;
hence thesis;
end;

reserve A,B,P for set;
reserve x for set;

:::::::::::::: The set of all finite subsets of a set ::::::::::::::::

definition let A;
func Fin A -> preBoolean set means
:Def5: for X being set holds X in it iff X c= A & X is finite;
existence
proof
defpred P[set] means ex y being set st y=\$1 & y c= A & y is finite;
consider P such that A1:for x holds x in P iff
x in bool A & P[x] from Separation;
{} c= A by XBOOLE_1:2;
then reconsider Q=P as non empty set by A1;
for X,Y being set st X in Q & Y in Q holds X \/ Y in Q & X \ Y in Q
proof
let X,Y be set;
assume
A2:    X in Q & Y in Q;
then consider Z1 being set such that
A3: Z1=X & Z1 c=A & Z1 is finite by A1;
consider Z2 being set such that
A4: Z2=Y & Z2 c= A & Z2 is finite by A1,A2;
A5:     Z1 \/ Z2 = X \/ Y & Z1 \/ Z2 c= A & Z1 \/ Z2 is finite
by A3,A4,FINSET_1:14,XBOOLE_1:8;
Z1 \ Z2 c= Z1 & Z1 \ Z2 is finite by A3,FINSET_1:16,XBOOLE_1:36;
then Z1 \ Z2 = X \ Y & Z1 \ Z2 c= A & Z1 \ Z2 is finite by A3,A4,XBOOLE_1:
1;
hence thesis by A1,A5;
end;
then reconsider R=Q as non empty preBoolean set by Th10;
for X being set holds X in R iff X c= A & X is finite
proof
let X be set;
thus X in R implies X c= A & X is finite
proof
assume X in R;
then ex Y being set st Y=X & Y c= A & Y is finite by A1;
hence thesis;
end;
thus (X c= A & X is finite) implies X in R by A1;
end;
hence thesis;
end;
uniqueness
proof
let P,Q be preBoolean set;
assume that
A6: for X being set holds X in P iff X c= A & X is finite and
A7: for X being set holds X in Q iff X c= A & X is finite;
for x being set holds x in P iff x in Q
proof
let x;
thus x in P implies x in Q
proof
assume x in P;
then x c= A & x is finite by A6;
hence thesis by A7;
end;
thus x in Q implies x in P
proof
assume x in Q;
then x c= A & x is finite by A7;
hence thesis by A6;
end;
end;
hence thesis by TARSKI:2;
end;
end;

definition let A;
cluster Fin A -> non empty;
coherence
proof
{} c= A by XBOOLE_1:2;
hence thesis by Def5;
end;
end;

definition let A;
cluster -> finite Element of Fin A;
coherence by Def5;
end;

canceled;

theorem Th23:
A c= B implies Fin A c= Fin B
proof assume
A1:  A c= B;
now let X;
assume X in Fin A;
then X c= A & X is finite by Def5;
then X c= B & X is finite by A1,XBOOLE_1:1;
hence X in Fin B by Def5;
end;
hence thesis by TARSKI:def 3;
end;

theorem
Fin (A /\ B) = Fin A /\ Fin B
proof A /\ B c= A & A /\ B c= B by XBOOLE_1:17;
then Fin (A /\ B) c= Fin A & Fin (A /\ B) c= Fin B by Th23;
hence Fin (A /\ B) c= Fin A /\ Fin B by XBOOLE_1:19;
now let X;
assume X in Fin A /\ Fin B;
then X in Fin A & X in Fin B by XBOOLE_0:def 3;
then X c= A & X c= B & X is finite by Def5;
then X c= A /\ B & X is finite by XBOOLE_1:19;
hence X in Fin (A /\ B) by Def5;
end;
hence Fin A /\ Fin B c= Fin (A /\ B) by TARSKI:def 3;
end;

theorem
Fin A \/ Fin B c= Fin (A \/ B)
proof A c= A \/ B & B c= A \/ B by XBOOLE_1:7;
then Fin A c= Fin (A \/ B) & Fin B c= Fin(A \/ B) by Th23;
hence thesis by XBOOLE_1:8;
end;

theorem
Th26: Fin A c= bool A
proof let x; assume x in Fin A;
then x c= A by Def5;
hence thesis;
end;

theorem
Th27: A is finite implies Fin A = bool A
proof
assume A1: A is finite;
bool A c= Fin A
proof
let x; assume A2: x in bool A;
then x is finite by A1,FINSET_1:13;
hence thesis by A2,Def5;
end;
then bool A c= Fin A & Fin A c= bool A by Th26;
hence thesis by XBOOLE_0:def 10;
end;

theorem
Fin {} = { {} } by Th27,ZFMISC_1:1;

:::::::::::::: Finite subsets ::::::::::::::::

definition let A;
mode Finite_Subset of A is Element of Fin A;
end;

canceled;

theorem
for X being Finite_Subset of A holds X is finite;

canceled;

theorem
for X being Finite_Subset of A holds X is Subset of A by Def5;

canceled;

theorem
A is finite implies
for X being Subset of A holds X is Finite_Subset of A
proof assume
A1:  A is finite;
let X be Subset of A;
X is finite by A1,FINSET_1:13;
hence thesis by Def5;
end;
```