:: MSALIMIT semantic presentation

registration
let c1 be non empty set ;
let c2 be non empty non void ManySortedSign ;
let c3 be MSAlgebra-Family of c1,c2;
let c4 be Element of c1;
let c5 be OperSymbol of c2;
cluster ((OPER a3) . a4) . a5 -> Relation-like Function-like ;
coherence
( ((OPER c3) . c4) . c5 is Function-like & ((OPER c3) . c4) . c5 is Relation-like )
proof end;
end;

registration
let c1 be non empty set ;
let c2 be non empty non void ManySortedSign ;
let c3 be MSAlgebra-Family of c1,c2;
let c4 be SortSymbol of c2;
cluster (SORTS a3) . a4 -> functional ;
coherence
(SORTS c3) . c4 is functional
proof end;
end;

definition
let c1 be non empty Poset;
let c2 be non empty non void ManySortedSign ;
mode OrderedAlgFam of c1,c2 -> MSAlgebra-Family of the carrier of a1,a2 means :Def1: :: MSALIMIT:def 1
ex b1 being ManySortedFunction of the InternalRel of a1 st
for b2, b3, b4 being Element of a1 st b2 >= b3 & b3 >= b4 holds
ex b5 being ManySortedFunction of (a3 . b2),(a3 . b3)ex b6 being ManySortedFunction of (a3 . b3),(a3 . b4) st
( b5 = b1 . b3,b2 & b6 = b1 . b4,b3 & b1 . b4,b2 = b6 ** b5 & b5 is_homomorphism a3 . b2,a3 . b3 );
existence
ex b1 being MSAlgebra-Family of the carrier of c1,c2ex b2 being ManySortedFunction of the InternalRel of c1 st
for b3, b4, b5 being Element of c1 st b3 >= b4 & b4 >= b5 holds
ex b6 being ManySortedFunction of (b1 . b3),(b1 . b4)ex b7 being ManySortedFunction of (b1 . b4),(b1 . b5) st
( b6 = b2 . b4,b3 & b7 = b2 . b5,b4 & b2 . b5,b3 = b7 ** b6 & b6 is_homomorphism b1 . b3,b1 . b4 )
proof end;
end;

:: deftheorem Def1 defines OrderedAlgFam MSALIMIT:def 1 :
for b1 being non empty Poset
for b2 being non empty non void ManySortedSign
for b3 being MSAlgebra-Family of the carrier of b1,b2 holds
( b3 is OrderedAlgFam of b1,b2 iff ex b4 being ManySortedFunction of the InternalRel of b1 st
for b5, b6, b7 being Element of b1 st b5 >= b6 & b6 >= b7 holds
ex b8 being ManySortedFunction of (b3 . b5),(b3 . b6)ex b9 being ManySortedFunction of (b3 . b6),(b3 . b7) st
( b8 = b4 . b6,b5 & b9 = b4 . b7,b6 & b4 . b7,b5 = b9 ** b8 & b8 is_homomorphism b3 . b5,b3 . b6 ) );

definition
let c1 be non empty Poset;
let c2 be non empty non void ManySortedSign ;
let c3 be OrderedAlgFam of c1,c2;
mode Binding of c3 -> ManySortedFunction of the InternalRel of a1 means :Def2: :: MSALIMIT:def 2
for b1, b2, b3 being Element of a1 st b1 >= b2 & b2 >= b3 holds
ex b4 being ManySortedFunction of (a3 . b1),(a3 . b2)ex b5 being ManySortedFunction of (a3 . b2),(a3 . b3) st
( b4 = a4 . b2,b1 & b5 = a4 . b3,b2 & a4 . b3,b1 = b5 ** b4 & b4 is_homomorphism a3 . b1,a3 . b2 );
existence
ex b1 being ManySortedFunction of the InternalRel of c1 st
for b2, b3, b4 being Element of c1 st b2 >= b3 & b3 >= b4 holds
ex b5 being ManySortedFunction of (c3 . b2),(c3 . b3)ex b6 being ManySortedFunction of (c3 . b3),(c3 . b4) st
( b5 = b1 . b3,b2 & b6 = b1 . b4,b3 & b1 . b4,b2 = b6 ** b5 & b5 is_homomorphism c3 . b2,c3 . b3 )
by Def1;
end;

:: deftheorem Def2 defines Binding MSALIMIT:def 2 :
for b1 being non empty Poset
for b2 being non empty non void ManySortedSign
for b3 being OrderedAlgFam of b1,b2
for b4 being ManySortedFunction of the InternalRel of b1 holds
( b4 is Binding of b3 iff for b5, b6, b7 being Element of b1 st b5 >= b6 & b6 >= b7 holds
ex b8 being ManySortedFunction of (b3 . b5),(b3 . b6)ex b9 being ManySortedFunction of (b3 . b6),(b3 . b7) st
( b8 = b4 . b6,b5 & b9 = b4 . b7,b6 & b4 . b7,b5 = b9 ** b8 & b8 is_homomorphism b3 . b5,b3 . b6 ) );

definition
let c1 be non empty Poset;
let c2 be non empty non void ManySortedSign ;
let c3 be OrderedAlgFam of c1,c2;
let c4 be Binding of c3;
let c5, c6 be Element of c1;
assume E3: c5 >= c6 ;
func bind c4,c5,c6 -> ManySortedFunction of (a3 . a5),(a3 . a6) equals :Def3: :: MSALIMIT:def 3
a4 . a6,a5;
coherence
c4 . c6,c5 is ManySortedFunction of (c3 . c5),(c3 . c6)
proof end;
end;

:: deftheorem Def3 defines bind MSALIMIT:def 3 :
for b1 being non empty Poset
for b2 being non empty non void ManySortedSign
for b3 being OrderedAlgFam of b1,b2
for b4 being Binding of b3
for b5, b6 being Element of b1 st b5 >= b6 holds
bind b4,b5,b6 = b4 . b6,b5;

theorem Th1: :: MSALIMIT:1
for b1 being non empty Poset
for b2, b3, b4 being Element of b1
for b5 being non empty non void ManySortedSign
for b6 being OrderedAlgFam of b1,b5
for b7 being Binding of b6 st b2 >= b3 & b3 >= b4 holds
(bind b7,b3,b4) ** (bind b7,b2,b3) = bind b7,b2,b4
proof end;

definition
let c1 be non empty Poset;
let c2 be non empty non void ManySortedSign ;
let c3 be OrderedAlgFam of c1,c2;
let c4 be Binding of c3;
attr a4 is normalized means :Def4: :: MSALIMIT:def 4
for b1 being Element of a1 holds a4 . b1,b1 = id the Sorts of (a3 . b1);
end;

:: deftheorem Def4 defines normalized MSALIMIT:def 4 :
for b1 being non empty Poset
for b2 being non empty non void ManySortedSign
for b3 being OrderedAlgFam of b1,b2
for b4 being Binding of b3 holds
( b4 is normalized iff for b5 being Element of b1 holds b4 . b5,b5 = id the Sorts of (b3 . b5) );

theorem Th2: :: MSALIMIT:2
for b1 being non empty Poset
for b2 being non empty non void ManySortedSign
for b3 being OrderedAlgFam of b1,b2
for b4 being Binding of b3
for b5, b6 being Element of b1 st b5 >= b6 holds
for b7 being ManySortedFunction of (b3 . b5),(b3 . b6) st b7 = bind b4,b5,b6 holds
b7 is_homomorphism b3 . b5,b3 . b6
proof end;

definition
let c1 be non empty Poset;
let c2 be non empty non void ManySortedSign ;
let c3 be OrderedAlgFam of c1,c2;
let c4 be Binding of c3;
func Normalized c4 -> Binding of a3 means :Def5: :: MSALIMIT:def 5
for b1, b2 being Element of a1 st b1 >= b2 holds
a5 . b2,b1 = IFEQ b2,b1,(id the Sorts of (a3 . b1)),((bind a4,b1,b2) ** (id the Sorts of (a3 . b1)));
existence
ex b1 being Binding of c3 st
for b2, b3 being Element of c1 st b2 >= b3 holds
b1 . b3,b2 = IFEQ b3,b2,(id the Sorts of (c3 . b2)),((bind c4,b2,b3) ** (id the Sorts of (c3 . b2)))
proof end;
uniqueness
for b1, b2 being Binding of c3 st ( for b3, b4 being Element of c1 st b3 >= b4 holds
b1 . b4,b3 = IFEQ b4,b3,(id the Sorts of (c3 . b3)),((bind c4,b3,b4) ** (id the Sorts of (c3 . b3))) ) & ( for b3, b4 being Element of c1 st b3 >= b4 holds
b2 . b4,b3 = IFEQ b4,b3,(id the Sorts of (c3 . b3)),((bind c4,b3,b4) ** (id the Sorts of (c3 . b3))) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def5 defines Normalized MSALIMIT:def 5 :
for b1 being non empty Poset
for b2 being non empty non void ManySortedSign
for b3 being OrderedAlgFam of b1,b2
for b4, b5 being Binding of b3 holds
( b5 = Normalized b4 iff for b6, b7 being Element of b1 st b6 >= b7 holds
b5 . b7,b6 = IFEQ b7,b6,(id the Sorts of (b3 . b6)),((bind b4,b6,b7) ** (id the Sorts of (b3 . b6))) );

theorem Th3: :: MSALIMIT:3
for b1 being non empty Poset
for b2 being non empty non void ManySortedSign
for b3 being OrderedAlgFam of b1,b2
for b4 being Binding of b3
for b5, b6 being Element of b1 st b5 >= b6 & b5 <> b6 holds
b4 . b6,b5 = (Normalized b4) . b6,b5
proof end;

registration
let c1 be non empty Poset;
let c2 be non empty non void ManySortedSign ;
let c3 be OrderedAlgFam of c1,c2;
let c4 be Binding of c3;
cluster Normalized a4 -> normalized ;
coherence
Normalized c4 is normalized
proof end;
end;

registration
let c1 be non empty Poset;
let c2 be non empty non void ManySortedSign ;
let c3 be OrderedAlgFam of c1,c2;
cluster normalized Binding of a3;
existence
ex b1 being Binding of c3 st b1 is normalized
proof end;
end;

theorem Th4: :: MSALIMIT:4
for b1 being non empty Poset
for b2 being non empty non void ManySortedSign
for b3 being OrderedAlgFam of b1,b2
for b4 being normalized Binding of b3
for b5, b6 being Element of b1 st b5 >= b6 holds
(Normalized b4) . b6,b5 = b4 . b6,b5
proof end;

definition
let c1 be non empty Poset;
let c2 be non empty non void ManySortedSign ;
let c3 be OrderedAlgFam of c1,c2;
let c4 be Binding of c3;
func InvLim c4 -> strict MSSubAlgebra of product a3 means :Def6: :: MSALIMIT:def 6
for b1 being SortSymbol of a2
for b2 being Element of (SORTS a3) . b1 holds
( b2 in the Sorts of a5 . b1 iff for b3, b4 being Element of a1 st b3 >= b4 holds
((bind a4,b3,b4) . b1) . (b2 . b3) = b2 . b4 );
existence
ex b1 being strict MSSubAlgebra of product c3 st
for b2 being SortSymbol of c2
for b3 being Element of (SORTS c3) . b2 holds
( b3 in the Sorts of b1 . b2 iff for b4, b5 being Element of c1 st b4 >= b5 holds
((bind c4,b4,b5) . b2) . (b3 . b4) = b3 . b5 )
proof end;
uniqueness
for b1, b2 being strict MSSubAlgebra of product c3 st ( for b3 being SortSymbol of c2
for b4 being Element of (SORTS c3) . b3 holds
( b4 in the Sorts of b1 . b3 iff for b5, b6 being Element of c1 st b5 >= b6 holds
((bind c4,b5,b6) . b3) . (b4 . b5) = b4 . b6 ) ) & ( for b3 being SortSymbol of c2
for b4 being Element of (SORTS c3) . b3 holds
( b4 in the Sorts of b2 . b3 iff for b5, b6 being Element of c1 st b5 >= b6 holds
((bind c4,b5,b6) . b3) . (b4 . b5) = b4 . b6 ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def6 defines InvLim MSALIMIT:def 6 :
for b1 being non empty Poset
for b2 being non empty non void ManySortedSign
for b3 being OrderedAlgFam of b1,b2
for b4 being Binding of b3
for b5 being strict MSSubAlgebra of product b3 holds
( b5 = InvLim b4 iff for b6 being SortSymbol of b2
for b7 being Element of (SORTS b3) . b6 holds
( b7 in the Sorts of b5 . b6 iff for b8, b9 being Element of b1 st b8 >= b9 holds
((bind b4,b8,b9) . b6) . (b7 . b8) = b7 . b9 ) );

theorem Th5: :: MSALIMIT:5
for b1 being non empty discrete Poset
for b2 being non empty non void ManySortedSign
for b3 being OrderedAlgFam of b1,b2
for b4 being normalized Binding of b3 holds InvLim b4 = product b3
proof end;

definition
let c1 be set ;
attr a1 is MSS-membered means :Def7: :: MSALIMIT:def 7
for b1 being set st b1 in a1 holds
b1 is non empty strict non void ManySortedSign ;
end;

:: deftheorem Def7 defines MSS-membered MSALIMIT:def 7 :
for b1 being set holds
( b1 is MSS-membered iff for b2 being set st b2 in b1 holds
b2 is non empty strict non void ManySortedSign );

registration
cluster non empty MSS-membered set ;
existence
ex b1 being set st
( not b1 is empty & b1 is MSS-membered )
proof end;
end;

definition
func TrivialMSSign -> strict ManySortedSign means :Def8: :: MSALIMIT:def 8
( a1 is empty & a1 is void );
existence
ex b1 being strict ManySortedSign st
( b1 is empty & b1 is void )
proof end;
uniqueness
for b1, b2 being strict ManySortedSign st b1 is empty & b1 is void & b2 is empty & b2 is void holds
b1 = b2
proof end;
end;

:: deftheorem Def8 defines TrivialMSSign MSALIMIT:def 8 :
for b1 being strict ManySortedSign holds
( b1 = TrivialMSSign iff ( b1 is empty & b1 is void ) );

registration
cluster TrivialMSSign -> empty strict void ;
coherence
( TrivialMSSign is empty & TrivialMSSign is void )
by Def8;
end;

registration
cluster empty strict void ManySortedSign ;
existence
ex b1 being ManySortedSign st
( b1 is strict & b1 is empty & b1 is void )
proof end;
end;

Lemma12: for b1 being empty void ManySortedSign holds id the carrier of b1, id the OperSymbols of b1 form_morphism_between b1,b1
proof end;

Lemma13: for b1 being non empty void ManySortedSign holds id the carrier of b1, id the OperSymbols of b1 form_morphism_between b1,b1
proof end;

theorem Th6: :: MSALIMIT:6
for b1 being void ManySortedSign holds id the carrier of b1, id the OperSymbols of b1 form_morphism_between b1,b1
proof end;

definition
let c1 be non empty set ;
func MSS_set c1 -> set means :Def9: :: MSALIMIT:def 9
for b1 being set holds
( b1 in a2 iff ex b2 being non empty strict non void ManySortedSign st
( b1 = b2 & the carrier of b2 c= a1 & the OperSymbols of b2 c= a1 ) );
existence
ex b1 being set st
for b2 being set holds
( b2 in b1 iff ex b3 being non empty strict non void ManySortedSign st
( b2 = b3 & the carrier of b3 c= c1 & the OperSymbols of b3 c= c1 ) )
proof end;
uniqueness
for b1, b2 being set st ( for b3 being set holds
( b3 in b1 iff ex b4 being non empty strict non void ManySortedSign st
( b3 = b4 & the carrier of b4 c= c1 & the OperSymbols of b4 c= c1 ) ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4 being non empty strict non void ManySortedSign st
( b3 = b4 & the carrier of b4 c= c1 & the OperSymbols of b4 c= c1 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def9 defines MSS_set MSALIMIT:def 9 :
for b1 being non empty set
for b2 being set holds
( b2 = MSS_set b1 iff for b3 being set holds
( b3 in b2 iff ex b4 being non empty strict non void ManySortedSign st
( b3 = b4 & the carrier of b4 c= b1 & the OperSymbols of b4 c= b1 ) ) );

registration
let c1 be non empty set ;
cluster MSS_set a1 -> non empty MSS-membered ;
coherence
( not MSS_set c1 is empty & MSS_set c1 is MSS-membered )
proof end;
end;

definition
let c1 be non empty MSS-membered set ;
redefine mode Element as Element of c1 -> non empty strict non void ManySortedSign ;
coherence
for b1 being Element of c1 holds b1 is non empty strict non void ManySortedSign
by Def7;
end;

definition
let c1, c2 be ManySortedSign ;
func MSS_morph c1,c2 -> set means :: MSALIMIT:def 10
for b1 being set holds
( b1 in a3 iff ex b2, b3 being Function st
( b1 = [b2,b3] & b2,b3 form_morphism_between a1,a2 ) );
existence
ex b1 being set st
for b2 being set holds
( b2 in b1 iff ex b3, b4 being Function st
( b2 = [b3,b4] & b3,b4 form_morphism_between c1,c2 ) )
proof end;
uniqueness
for b1, b2 being set st ( for b3 being set holds
( b3 in b1 iff ex b4, b5 being Function st
( b3 = [b4,b5] & b4,b5 form_morphism_between c1,c2 ) ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4, b5 being Function st
( b3 = [b4,b5] & b4,b5 form_morphism_between c1,c2 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def10 defines MSS_morph MSALIMIT:def 10 :
for b1, b2 being ManySortedSign
for b3 being set holds
( b3 = MSS_morph b1,b2 iff for b4 being set holds
( b4 in b3 iff ex b5, b6 being Function st
( b4 = [b5,b6] & b5,b6 form_morphism_between b1,b2 ) ) );