:: CLOSURE1 semantic presentation

scheme :: CLOSURE1:sch 30
s30{ F1() -> set , F2() -> V5 ManySortedSet of F1(), F3() -> ManySortedSet of F1(), P1[ set ] } :
( ( for X being ManySortedSet of F1() holds
( X in F2() iff ( X in F3() & P1[X] ) ) ) implies F2() c= F3() )
proof end;

theorem Th1: :: CLOSURE1:1
for X being non empty set
for x, y being set st x c= y holds
{ t where t is Element of X : y c= t } c= { z where z is Element of X : x c= z }
proof end;

theorem Th2: :: CLOSURE1:2
for I being set
for M being ManySortedSet of I st ex A being ManySortedSet of I st A in M holds
M is non-empty
proof end;

definition
let I be set ;
let F be ManySortedFunction of I;
let A be ManySortedSet of I;
redefine func .. as c2 .. c3 -> ManySortedSet of a1;
coherence
F .. A is ManySortedSet of I
proof end;
end;

E49: now
let I be set ;
let A be V5 ManySortedSet of I, B be V5 ManySortedSet of I;
let F be ManySortedFunction of A,B;
let X be Element of A;
thus F .. X is Element of B
proof
let i be set ; :: according to PBOOLE:def 17
assume E34: i in I ;
E36: dom F = I by PBOOLE:def 3;
reconsider g = F . i as Function ;
E37: g is Function of A . i,B . i by , PBOOLE:def 18;
E38: A . i <> {} by , PBOOLE:def 16;
E39: B . i <> {} by , PBOOLE:def 16;
X . i is Element of A . i by , PBOOLE:def 17;
then g . (X . i) in B . i by , , , FUNCT_2:7;
hence (F .. X) . i is Element of B . i by , , PRALG_1:def 17;
end;
end;

definition
let I be set ;
let A be V5 ManySortedSet of I, B be V5 ManySortedSet of I;
let F be ManySortedFunction of A,B;
let X be Element of A;
redefine func .. as c4 .. c5 -> Element of a3;
coherence
F .. X is Element of B
by ;
end;

theorem Th3: :: CLOSURE1:3
for I being set
for A, X being ManySortedSet of I
for B being V5 ManySortedSet of I
for F being ManySortedFunction of A,B st X in A holds
F .. X in B
proof end;

theorem Th4: :: CLOSURE1:4
for I being set
for F, G being ManySortedFunction of I
for A being ManySortedSet of I st A in doms G holds
F .. (G .. A) = (F ** G) .. A
proof end;

theorem Th5: :: CLOSURE1:5
for I being set
for F being ManySortedFunction of I st F is "1-1" holds
for A, B being ManySortedSet of I st A in doms F & B in doms F & F .. A = F .. B holds
A = B
proof end;

theorem Th6: :: CLOSURE1:6
for I being set
for F being ManySortedFunction of I st doms F is non-empty & ( for A, B being ManySortedSet of I st A in doms F & B in doms F & F .. A = F .. B holds
A = B ) holds
F is "1-1"
proof end;

theorem Th7: :: CLOSURE1:7
for I being set
for A, B being V5 ManySortedSet of I
for F, G being ManySortedFunction of A,B st ( for M being ManySortedSet of I st M in A holds
F .. M = G .. M ) holds
F = G
proof end;

registration
let I be set ;
let M be ManySortedSet of I;
cluster V6 V18 Element of bool a2;
existence
ex b1 being Element of bool M st
( b1 is empty-yielding & b1 is locally-finite )
proof end;
end;

definition
let I be set ;
let M be ManySortedSet of I;
mode MSSetOp of a2 is ManySortedFunction of bool a2, bool a2;
end;

definition
let I be set ;
let M be ManySortedSet of I;
let O be MSSetOp of M;
let X be Element of bool M;
redefine func .. as c3 .. c4 -> Element of bool a2;
coherence
O .. X is Element of bool M
by ;
end;

definition
let I be set ;
let M be ManySortedSet of I;
let IT be MSSetOp of M;
canceled;
attr a3 is reflexive means :Def2: :: CLOSURE1:def 2
for X being Element of bool M holds X c= IT .. X;
attr a3 is monotonic means :Def3: :: CLOSURE1:def 3
for X, Y being Element of bool M st X c= Y holds
IT .. X c= IT .. Y;
attr a3 is idempotent means :Def4: :: CLOSURE1:def 4
for X being Element of bool M holds IT .. X = IT .. (IT .. X);
attr a3 is topological means :Def5: :: CLOSURE1:def 5
for X, Y being Element of bool M holds IT .. (X \/ Y) = (IT .. X) \/ (IT .. Y);
end;

:: deftheorem Def1 CLOSURE1:def 1 :
canceled;

:: deftheorem Def2 defines reflexive CLOSURE1:def 2 :
for I being set
for M being ManySortedSet of I
for IT being MSSetOp of M holds
( IT is reflexive iff for X being Element of bool M holds X c= IT .. X );

:: deftheorem Def3 defines monotonic CLOSURE1:def 3 :
for I being set
for M being ManySortedSet of I
for IT being MSSetOp of M holds
( IT is monotonic iff for X, Y being Element of bool M st X c= Y holds
IT .. X c= IT .. Y );

:: deftheorem Def4 defines idempotent CLOSURE1:def 4 :
for I being set
for M being ManySortedSet of I
for IT being MSSetOp of M holds
( IT is idempotent iff for X being Element of bool M holds IT .. X = IT .. (IT .. X) );

:: deftheorem Def5 defines topological CLOSURE1:def 5 :
for I being set
for M being ManySortedSet of I
for IT being MSSetOp of M holds
( IT is topological iff for X, Y being Element of bool M holds IT .. (X \/ Y) = (IT .. X) \/ (IT .. Y) );

theorem Th8: :: CLOSURE1:8
for I being set
for M being V5 ManySortedSet of I
for X being Element of M holds X = (id M) .. X
proof end;

theorem Th9: :: CLOSURE1:9
for I being set
for M being V5 ManySortedSet of I
for X, Y being Element of M st X c= Y holds
(id M) .. X c= (id M) .. Y
proof end;

theorem Th10: :: CLOSURE1:10
for I being set
for M being V5 ManySortedSet of I
for X, Y being Element of M st X \/ Y is Element of M holds
(id M) .. (X \/ Y) = ((id M) .. X) \/ ((id M) .. Y)
proof end;

theorem Th11: :: CLOSURE1:11
for I being set
for M being ManySortedSet of I
for X being Element of bool M
for i, x being set st i in I & x in ((id (bool M)) .. X) . i holds
ex Y being V18 Element of bool M st
( Y c= X & x in ((id (bool M)) .. Y) . i )
proof end;

registration
let I be set ;
let M be ManySortedSet of I;
cluster reflexive monotonic idempotent topological ManySortedFunction of bool a2, bool a2;
existence
ex b1 being MSSetOp of M st
( b1 is reflexive & b1 is monotonic & b1 is idempotent & b1 is topological )
proof end;
end;

theorem Th12: :: CLOSURE1:12
for I being set
for A being ManySortedSet of I holds id (bool A) is reflexive MSSetOp of A
proof end;

theorem Th13: :: CLOSURE1:13
for I being set
for A being ManySortedSet of I holds id (bool A) is monotonic MSSetOp of A
proof end;

theorem Th14: :: CLOSURE1:14
for I being set
for A being ManySortedSet of I holds id (bool A) is idempotent MSSetOp of A
proof end;

theorem Th15: :: CLOSURE1:15
for I being set
for A being ManySortedSet of I holds id (bool A) is topological MSSetOp of A
proof end;

theorem Th16: :: CLOSURE1:16
for I being set
for M being ManySortedSet of I
for P being MSSetOp of M
for E being Element of bool M st E = M & P is reflexive holds
E = P .. E
proof end;

theorem Th17: :: CLOSURE1:17
for I being set
for M being ManySortedSet of I
for P being MSSetOp of M st P is reflexive & ( for X being Element of bool M holds P .. X c= X ) holds
P is idempotent
proof end;

theorem Th18: :: CLOSURE1:18
for I being set
for M being ManySortedSet of I
for P being MSSetOp of M
for E, T being Element of bool M st P is monotonic holds
P .. (E /\ T) c= (P .. E) /\ (P .. T)
proof end;

registration
let I be set ;
let M be ManySortedSet of I;
cluster topological -> monotonic ManySortedFunction of bool a2, bool a2;
coherence
for b1 being MSSetOp of M st b1 is topological holds
b1 is monotonic
proof end;
end;

theorem Th19: :: CLOSURE1:19
for I being set
for M being ManySortedSet of I
for P being MSSetOp of M
for E, T being Element of bool M st P is topological holds
(P .. E) \ (P .. T) c= P .. (E \ T)
proof end;

definition
let I be set ;
let M be ManySortedSet of I;
let R be MSSetOp of M;
let P be MSSetOp of M;
redefine func ** as c4 ** c3 -> MSSetOp of a2;
coherence
P ** R is MSSetOp of M
proof end;
end;

theorem Th20: :: CLOSURE1:20
for I being set
for M being ManySortedSet of I
for P, R being MSSetOp of M st P is reflexive & R is reflexive holds
P ** R is reflexive
proof end;

theorem Th21: :: CLOSURE1:21
for I being set
for M being ManySortedSet of I
for P, R being MSSetOp of M st P is monotonic & R is monotonic holds
P ** R is monotonic
proof end;

theorem Th22: :: CLOSURE1:22
for I being set
for M being ManySortedSet of I
for P, R being MSSetOp of M st P is idempotent & R is idempotent & P ** R = R ** P holds
P ** R is idempotent
proof end;

theorem Th23: :: CLOSURE1:23
for I being set
for M being ManySortedSet of I
for P, R being MSSetOp of M st P is topological & R is topological holds
P ** R is topological
proof end;

E89: now
let I be set ;
let M be ManySortedSet of I;
let i be set ;
let a be ManySortedSet of I;
let b be Element of bool (M . i);
assume that
i in I and
E34: a = ([0] I) +* (i .--> b) ;
[0] I c= M by MBOOLEAN:5;
then E36: [0] I in bool M by MBOOLEAN:1;
E37: dom (i .--> b) = {i} by CQC_LANG:5;
thus a in bool M
proof
let j be set ; :: according to PBOOLE:def 4
assume E38: j in I ;
i in {i} by TARSKI:def 1;
then E39: a . i = (i .--> b) . i by , , FUNCT_4:14
.= b by CQC_LANG:6 ;
now
per cases ( j = i or j <> i ) ;
case E40: j = i ;
then b in bool (M . j) ;
hence a . j in (bool M) . j by , , , MBOOLEAN:def 1;
end;
case j <> i ;
then not j in dom (i .--> b) by , TARSKI:def 1;
then a . j = ([0] I) . j by , FUNCT_4:12;
hence a . j in (bool M) . j by , , PBOOLE:def 4;
end;
end;
end;
hence a . j in (bool M) . j ;
end;
end;

theorem Th24: :: CLOSURE1:24
for i, I being set
for M being ManySortedSet of I
for f being Function
for P being MSSetOp of M st P is reflexive & i in I & f = P . i holds
for x being Element of bool (M . i) holds x c= f . x
proof end;

theorem Th25: :: CLOSURE1:25
for i, I being set
for M being ManySortedSet of I
for f being Function
for P being MSSetOp of M st P is monotonic & i in I & f = P . i holds
for x, y being Element of bool (M . i) st x c= y holds
f . x c= f . y
proof end;

theorem Th26: :: CLOSURE1:26
for i, I being set
for M being ManySortedSet of I
for f being Function
for P being MSSetOp of M st P is idempotent & i in I & f = P . i holds
for x being Element of bool (M . i) holds f . x = f . (f . x)
proof end;

theorem Th27: :: CLOSURE1:27
for i, I being set
for M being ManySortedSet of I
for f being Function
for P being MSSetOp of M st P is topological & i in I & f = P . i holds
for x, y being Element of bool (M . i) holds f . (x \/ y) = (f . x) \/ (f . y)
proof end;

definition
let S be 1-sorted ;
attr a2 is strict;
struct MSClosureStr of c1 -> many-sorted of a1;
aggr MSClosureStr(# Sorts, Family #) -> MSClosureStr of a1;
sel Family c2 -> MSSubsetFamily of the Sorts of a2;
end;

definition
let S be 1-sorted ;
let IT be MSClosureStr of S;
attr a2 is additive means :Def6: :: CLOSURE1:def 6
the Family of IT is additive;
attr a2 is absolutely-additive means :Def7: :: CLOSURE1:def 7
the Family of IT is absolutely-additive;
attr a2 is multiplicative means :Def8: :: CLOSURE1:def 8
the Family of IT is multiplicative;
attr a2 is absolutely-multiplicative means :Def9: :: CLOSURE1:def 9
the Family of IT is absolutely-multiplicative;
attr a2 is properly-upper-bound means :Def10: :: CLOSURE1:def 10
the Family of IT is properly-upper-bound;
attr a2 is properly-lower-bound means :Def11: :: CLOSURE1:def 11
the Family of IT is properly-lower-bound;
end;

:: deftheorem Def6 defines additive CLOSURE1:def 6 :
for S being 1-sorted
for IT being MSClosureStr of S holds
( IT is additive iff the Family of IT is additive );

:: deftheorem Def7 defines absolutely-additive CLOSURE1:def 7 :
for S being 1-sorted
for IT being MSClosureStr of S holds
( IT is absolutely-additive iff the Family of IT is absolutely-additive );

:: deftheorem Def8 defines multiplicative CLOSURE1:def 8 :
for S being 1-sorted
for IT being MSClosureStr of S holds
( IT is multiplicative iff the Family of IT is multiplicative );

:: deftheorem Def9 defines absolutely-multiplicative CLOSURE1:def 9 :
for S being 1-sorted
for IT being MSClosureStr of S holds
( IT is absolutely-multiplicative iff the Family of IT is absolutely-multiplicative );

:: deftheorem Def10 defines properly-upper-bound CLOSURE1:def 10 :
for S being 1-sorted
for IT being MSClosureStr of S holds
( IT is properly-upper-bound iff the Family of IT is properly-upper-bound );

:: deftheorem Def11 defines properly-lower-bound CLOSURE1:def 11 :
for S being 1-sorted
for IT being MSClosureStr of S holds
( IT is properly-lower-bound iff the Family of IT is properly-lower-bound );

definition
let S be 1-sorted ;
let MS be many-sorted of S;
func MSFull c2 -> MSClosureStr of a1 equals :: CLOSURE1:def 12
MSClosureStr(# the Sorts of MS,(bool the Sorts of MS) #);
correctness
coherence
MSClosureStr(# the Sorts of MS,(bool the Sorts of MS) #) is MSClosureStr of S
;
;
end;

:: deftheorem Def12 defines MSFull CLOSURE1:def 12 :
for S being 1-sorted
for MS being many-sorted of S holds MSFull MS = MSClosureStr(# the Sorts of MS,(bool the Sorts of MS) #);

registration
let S be 1-sorted ;
let MS be many-sorted of S;
cluster MSFull a2 -> strict additive absolutely-additive multiplicative absolutely-multiplicative properly-upper-bound properly-lower-bound ;
coherence
( MSFull MS is strict & MSFull MS is additive & MSFull MS is absolutely-additive & MSFull MS is multiplicative & MSFull MS is absolutely-multiplicative & MSFull MS is properly-upper-bound & MSFull MS is properly-lower-bound )
proof end;
end;

registration
let S be 1-sorted ;
let MS be non-empty many-sorted of S;
cluster MSFull a2 -> non-empty strict additive absolutely-additive multiplicative absolutely-multiplicative properly-upper-bound properly-lower-bound ;
coherence
MSFull MS is non-empty
by MSUALG_1:def 8;
end;

registration
let S be 1-sorted ;
cluster non-empty strict additive absolutely-additive multiplicative absolutely-multiplicative properly-upper-bound properly-lower-bound MSClosureStr of a1;
existence
ex b1 being MSClosureStr of S st
( b1 is strict & b1 is non-empty & b1 is additive & b1 is absolutely-additive & b1 is multiplicative & b1 is absolutely-multiplicative & b1 is properly-upper-bound & b1 is properly-lower-bound )
proof end;
end;

registration
let S be 1-sorted ;
let CS be additive MSClosureStr of S;
cluster the Family of a2 -> additive ;
coherence
the Family of CS is additive
by ;
end;

registration
let S be 1-sorted ;
let CS be absolutely-additive MSClosureStr of S;
cluster the Family of a2 -> absolutely-additive ;
coherence
the Family of CS is absolutely-additive
by ;
end;

registration
let S be 1-sorted ;
let CS be multiplicative MSClosureStr of S;
cluster the Family of a2 -> multiplicative ;
coherence
the Family of CS is multiplicative
by ;
end;

registration
let S be 1-sorted ;
let CS be absolutely-multiplicative MSClosureStr of S;
cluster the Family of a2 -> absolutely-multiplicative ;
coherence
the Family of CS is absolutely-multiplicative
by ;
end;

registration
let S be 1-sorted ;
let CS be properly-upper-bound MSClosureStr of S;
cluster the Family of a2 -> properly-upper-bound ;
coherence
the Family of CS is properly-upper-bound
by ;
end;

registration
let S be 1-sorted ;
let CS be properly-lower-bound MSClosureStr of S;
cluster the Family of a2 -> properly-lower-bound ;
coherence
the Family of CS is properly-lower-bound
by ;
end;

registration
let S be 1-sorted ;
let M be V5 ManySortedSet of the carrier of S;
let F be MSSubsetFamily of M;
cluster MSClosureStr(# a2,a3 #) -> non-empty ;
coherence
MSClosureStr(# M,F #) is non-empty
proof end;
end;

registration
let S be 1-sorted ;
let MS be many-sorted of S;
let F be additive MSSubsetFamily of the Sorts of MS;
cluster MSClosureStr(# the Sorts of a2,a3 #) -> additive ;
coherence
MSClosureStr(# the Sorts of MS,F #) is additive
by ;
end;

registration
let S be 1-sorted ;
let MS be many-sorted of S;
let F be absolutely-additive MSSubsetFamily of the Sorts of MS;
cluster MSClosureStr(# the Sorts of a2,a3 #) -> additive absolutely-additive ;
coherence
MSClosureStr(# the Sorts of MS,F #) is absolutely-additive
by ;
end;

registration
let S be 1-sorted ;
let MS be many-sorted of S;
let F be multiplicative MSSubsetFamily of the Sorts of MS;
cluster MSClosureStr(# the Sorts of a2,a3 #) -> multiplicative ;
coherence
MSClosureStr(# the Sorts of MS,F #) is multiplicative
by ;
end;

registration
let S be 1-sorted ;
let MS be many-sorted of S;
let F be absolutely-multiplicative MSSubsetFamily of the Sorts of MS;
cluster MSClosureStr(# the Sorts of a2,a3 #) -> multiplicative absolutely-multiplicative ;
coherence
MSClosureStr(# the Sorts of MS,F #) is absolutely-multiplicative
by ;
end;

registration
let S be 1-sorted ;
let MS be many-sorted of S;
let F be properly-upper-bound MSSubsetFamily of the Sorts of MS;
cluster MSClosureStr(# the Sorts of a2,a3 #) -> properly-upper-bound ;
coherence
MSClosureStr(# the Sorts of MS,F #) is properly-upper-bound
by ;
end;

registration
let S be 1-sorted ;
let MS be many-sorted of S;
let F be properly-lower-bound MSSubsetFamily of the Sorts of MS;
cluster MSClosureStr(# the Sorts of a2,a3 #) -> properly-lower-bound ;
coherence
MSClosureStr(# the Sorts of MS,F #) is properly-lower-bound
by ;
end;

registration
let S be 1-sorted ;
cluster absolutely-additive -> additive MSClosureStr of a1;
coherence
for b1 being MSClosureStr of S st b1 is absolutely-additive holds
b1 is additive
proof end;
end;

registration
let S be 1-sorted ;
cluster absolutely-multiplicative -> multiplicative MSClosureStr of a1;
coherence
for b1 being MSClosureStr of S st b1 is absolutely-multiplicative holds
b1 is multiplicative
proof end;
end;

registration
let S be 1-sorted ;
cluster absolutely-multiplicative -> properly-upper-bound MSClosureStr of a1;
coherence
for b1 being MSClosureStr of S st b1 is absolutely-multiplicative holds
b1 is properly-upper-bound
proof end;
end;

registration
let S be 1-sorted ;
cluster absolutely-additive -> properly-lower-bound MSClosureStr of a1;
coherence
for b1 being MSClosureStr of S st b1 is absolutely-additive holds
b1 is properly-lower-bound
proof end;
end;

definition
let S be 1-sorted ;
mode MSClosureSystem of a1 is absolutely-multiplicative MSClosureStr of a1;
end;

definition
let I be set ;
let M be ManySortedSet of I;
mode MSClosureOperator of a2 is reflexive monotonic idempotent MSSetOp of a2;
end;

definition
let I be set ;
let M be ManySortedSet of I;
let F be ManySortedFunction of M,M;
func MSFixPoints c3 -> ManySortedSubset of a2 means :Def13: :: CLOSURE1:def 13
for x, i being set st i in I holds
( x in it . i iff ex f being Function st
( f = F . i & x in dom f & f . x = x ) );
existence
ex b1 being ManySortedSubset of M st
for x, i being set st i in I holds
( x in b1 . i iff ex f being Function st
( f = F . i & x in dom f & f . x = x ) )
proof end;
uniqueness
for b1, b2 being ManySortedSubset of M st ( for x, i being set st i in I holds
( x in b1 . i iff ex f being Function st
( f = F . i & x in dom f & f . x = x ) ) ) & ( for x, i being set st i in I holds
( x in b2 . i iff ex f being Function st
( f = F . i & x in dom f & f . x = x ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def13 defines MSFixPoints CLOSURE1:def 13 :
for I being set
for M being ManySortedSet of I
for F being ManySortedFunction of M,M
for b4 being ManySortedSubset of M holds
( b4 = MSFixPoints F iff for x, i being set st i in I holds
( x in b4 . i iff ex f being Function st
( f = F . i & x in dom f & f . x = x ) ) );

registration
let I be set ;
let M be V6 ManySortedSet of I;
let F be ManySortedFunction of M,M;
cluster MSFixPoints a3 -> V6 ;
coherence
MSFixPoints F is empty-yielding
proof end;
end;

theorem Th28: :: CLOSURE1:28
for I being set
for M, A being ManySortedSet of I
for F being ManySortedFunction of M,M holds
( ( A in M & F .. A = A ) iff A in MSFixPoints F )
proof end;

theorem Th29: :: CLOSURE1:29
for I being set
for A being ManySortedSet of I holds MSFixPoints (id A) = A
proof end;

theorem Th30: :: CLOSURE1:30
for S being 1-sorted
for A being ManySortedSet of the carrier of S
for J being reflexive monotonic MSSetOp of A
for D being MSSubsetFamily of A st D = MSFixPoints J holds
MSClosureStr(# A,D #) is MSClosureSystem of S
proof end;

theorem Th31: :: CLOSURE1:31
for I being set
for M being ManySortedSet of I
for D being properly-upper-bound MSSubsetFamily of M
for X being Element of bool M ex SF being V5 MSSubsetFamily of M st
for Y being ManySortedSet of I holds
( Y in SF iff ( Y in D & X c= Y ) )
proof end;

theorem Th32: :: CLOSURE1:32
for I being set
for M being ManySortedSet of I
for D being properly-upper-bound MSSubsetFamily of M
for X being Element of bool M
for SF being V5 MSSubsetFamily of M st ( for Y being ManySortedSet of I holds
( Y in SF iff ( Y in D & X c= Y ) ) ) holds
for i being set
for Di being non empty set st i in I & Di = D . i holds
SF . i = { z where z is Element of Di : X . i c= z }
proof end;

theorem Th33: :: CLOSURE1:33
for I being set
for M being ManySortedSet of I
for D being properly-upper-bound MSSubsetFamily of M ex J being MSSetOp of M st
for X being Element of bool M
for SF being V5 MSSubsetFamily of M st ( for Y being ManySortedSet of I holds
( Y in SF iff ( Y in D & X c= Y ) ) ) holds
J .. X = meet SF
proof end;

theorem Th34: :: CLOSURE1:34
for I being set
for M being ManySortedSet of I
for D being properly-upper-bound MSSubsetFamily of M
for A being Element of bool M
for J being MSSetOp of M st A in D & ( for X being Element of bool M
for SF being V5 MSSubsetFamily of M st ( for Y being ManySortedSet of I holds
( Y in SF iff ( Y in D & X c= Y ) ) ) holds
J .. X = meet SF ) holds
J .. A = A
proof end;

theorem Th35: :: CLOSURE1:35
for I being set
for M being ManySortedSet of I
for D being absolutely-multiplicative MSSubsetFamily of M
for A being Element of bool M
for J being MSSetOp of M st J .. A = A & ( for X being Element of bool M
for SF being V5 MSSubsetFamily of M st ( for Y being ManySortedSet of I holds
( Y in SF iff ( Y in D & X c= Y ) ) ) holds
J .. X = meet SF ) holds
A in D
proof end;

theorem Th36: :: CLOSURE1:36
for I being set
for M being ManySortedSet of I
for D being properly-upper-bound MSSubsetFamily of M
for J being MSSetOp of M st ( for X being Element of bool M
for SF being V5 MSSubsetFamily of M st ( for Y being ManySortedSet of I holds
( Y in SF iff ( Y in D & X c= Y ) ) ) holds
J .. X = meet SF ) holds
( J is reflexive & J is monotonic )
proof end;

theorem Th37: :: CLOSURE1:37
for I being set
for M being ManySortedSet of I
for D being absolutely-multiplicative MSSubsetFamily of M
for J being MSSetOp of M st ( for X being Element of bool M
for SF being V5 MSSubsetFamily of M st ( for Y being ManySortedSet of I holds
( Y in SF iff ( Y in D & X c= Y ) ) ) holds
J .. X = meet SF ) holds
J is idempotent
proof end;

theorem Th38: :: CLOSURE1:38
for S being 1-sorted
for D being MSClosureSystem of S
for J being MSSetOp of the Sorts of D st ( for X being Element of bool the Sorts of D
for SF being V5 MSSubsetFamily of the Sorts of D st ( for Y being ManySortedSet of the carrier of S holds
( Y in SF iff ( Y in the Family of D & X c= Y ) ) ) holds
J .. X = meet SF ) holds
J is MSClosureOperator of the Sorts of D by , ;

definition
let S be 1-sorted ;
let A be ManySortedSet of the carrier of S;
let C be MSClosureOperator of A;
func ClOp->ClSys c3 -> MSClosureSystem of a1 means :Def14: :: CLOSURE1:def 14
ex D being MSSubsetFamily of A st
( D = MSFixPoints C & it = MSClosureStr(# A,D #) );
existence
ex b1 being MSClosureSystem of S ex D being MSSubsetFamily of A st
( D = MSFixPoints C & b1 = MSClosureStr(# A,D #) )
proof end;
uniqueness
for b1, b2 being MSClosureSystem of S st ex D being MSSubsetFamily of A st
( D = MSFixPoints C & b1 = MSClosureStr(# A,D #) ) & ex D being MSSubsetFamily of A st
( D = MSFixPoints C & b2 = MSClosureStr(# A,D #) ) holds
b1 = b2
;
end;

:: deftheorem Def14 defines ClOp->ClSys CLOSURE1:def 14 :
for S being 1-sorted
for A being ManySortedSet of the carrier of S
for C being MSClosureOperator of A
for b4 being MSClosureSystem of S holds
( b4 = ClOp->ClSys C iff ex D being MSSubsetFamily of A st
( D = MSFixPoints C & b4 = MSClosureStr(# A,D #) ) );

registration
let S be 1-sorted ;
let A be ManySortedSet of the carrier of S;
let C be MSClosureOperator of A;
cluster ClOp->ClSys a3 -> strict ;
coherence
ClOp->ClSys C is strict
proof end;
end;

registration
let S be 1-sorted ;
let A be V5 ManySortedSet of the carrier of S;
let C be MSClosureOperator of A;
cluster ClOp->ClSys a3 -> non-empty strict ;
coherence
ClOp->ClSys C is non-empty
proof end;
end;

definition
let S be 1-sorted ;
let D be MSClosureSystem of S;
func ClSys->ClOp c2 -> MSClosureOperator of the Sorts of a2 means :Def15: :: CLOSURE1:def 15
for X being Element of bool the Sorts of D
for SF being V5 MSSubsetFamily of the Sorts of D st ( for Y being ManySortedSet of the carrier of S holds
( Y in SF iff ( Y in the Family of D & X c= Y ) ) ) holds
it .. X = meet SF;
existence
ex b1 being MSClosureOperator of the Sorts of D st
for X being Element of bool the Sorts of D
for SF being V5 MSSubsetFamily of the Sorts of D st ( for Y being ManySortedSet of the carrier of S holds
( Y in SF iff ( Y in the Family of D & X c= Y ) ) ) holds
b1 .. X = meet SF
proof end;
uniqueness
for b1, b2 being MSClosureOperator of the Sorts of D st ( for X being Element of bool the Sorts of D
for SF being V5 MSSubsetFamily of the Sorts of D st ( for Y being ManySortedSet of the carrier of S holds
( Y in SF iff ( Y in the Family of D & X c= Y ) ) ) holds
b1 .. X = meet SF ) & ( for X being Element of bool the Sorts of D
for SF being V5 MSSubsetFamily of the Sorts of D st ( for Y being ManySortedSet of the carrier of S holds
( Y in SF iff ( Y in the Family of D & X c= Y ) ) ) holds
b2 .. X = meet SF ) holds
b1 = b2
proof end;
end;

:: deftheorem Def15 defines ClSys->ClOp CLOSURE1:def 15 :
for S being 1-sorted
for D being MSClosureSystem of S
for b3 being MSClosureOperator of the Sorts of D holds
( b3 = ClSys->ClOp D iff for X being Element of bool the Sorts of D
for SF being V5 MSSubsetFamily of the Sorts of D st ( for Y being ManySortedSet of the carrier of S holds
( Y in SF iff ( Y in the Family of D & X c= Y ) ) ) holds
b3 .. X = meet SF );

theorem Th39: :: CLOSURE1:39
for S being 1-sorted
for A being ManySortedSet of the carrier of S
for J being MSClosureOperator of A holds ClSys->ClOp (ClOp->ClSys J) = J
proof end;

theorem Th40: :: CLOSURE1:40
for S being 1-sorted
for D being MSClosureSystem of S holds ClOp->ClSys (ClSys->ClOp D) = MSClosureStr(# the Sorts of D,the Family of D #)
proof end;