Article MSUALG_4, MML version 4.99.1005
:: MSUALG_4:attrnot 1 => MSUALG_4:attr 1
definition
let a1 be Relation-like Function-like set;
attr a1 is Relation-yielding means
for b1 being set
st b1 in proj1 a1
holds a1 . b1 is Relation-like set;
end;
:: MSUALG_4:dfs 1
definiens
let a1 be Relation-like Function-like set;
To prove
a1 is Relation-yielding
it is sufficient to prove
thus for b1 being set
st b1 in proj1 a1
holds a1 . b1 is Relation-like set;
:: MSUALG_4:def 1
theorem
for b1 being Relation-like Function-like set holds
b1 is Relation-yielding
iff
for b2 being set
st b2 in proj1 b1
holds b1 . b2 is Relation-like set;
:: MSUALG_4:exreg 1
registration
let a1 be set;
cluster Relation-like Function-like Relation-yielding ManySortedSet of a1;
end;
:: MSUALG_4:modenot 1
definition
let a1 be set;
mode ManySortedRelation of a1 is Relation-yielding ManySortedSet of a1;
end;
:: MSUALG_4:modenot 2 => MSUALG_4:mode 1
definition
let a1 be set;
let a2, a3 be ManySortedSet of a1;
mode ManySortedRelation of A2,A3 -> ManySortedSet of a1 means
for b1 being set
st b1 in a1
holds it . b1 is Relation of a2 . b1,a3 . b1;
end;
:: MSUALG_4:dfs 2
definiens
let a1 be set;
let a2, a3, a4 be ManySortedSet of a1;
To prove
a4 is ManySortedRelation of a2,a3
it is sufficient to prove
thus for b1 being set
st b1 in a1
holds a4 . b1 is Relation of a2 . b1,a3 . b1;
:: MSUALG_4:def 2
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1 holds
b4 is ManySortedRelation of b2,b3
iff
for b5 being set
st b5 in b1
holds b4 . b5 is Relation of b2 . b5,b3 . b5;
:: MSUALG_4:condreg 1
registration
let a1 be set;
let a2, a3 be ManySortedSet of a1;
cluster -> Relation-yielding (ManySortedRelation of a2,a3);
end;
:: MSUALG_4:modenot 3
definition
let a1 be set;
let a2 be ManySortedSet of a1;
mode ManySortedRelation of a2 is ManySortedRelation of a2,a2;
end;
:: MSUALG_4:attrnot 2 => MSUALG_4:attr 2
definition
let a1 be set;
let a2 be ManySortedSet of a1;
let a3 be ManySortedRelation of a2,a2;
attr a3 is MSEquivalence_Relation-like means
for b1 being set
for b2 being Relation of a2 . b1,a2 . b1
st b1 in a1 & a3 . b1 = b2
holds b2 is symmetric transitive total Relation of a2 . b1,a2 . b1;
end;
:: MSUALG_4:dfs 3
definiens
let a1 be set;
let a2 be ManySortedSet of a1;
let a3 be ManySortedRelation of a2,a2;
To prove
a3 is MSEquivalence_Relation-like
it is sufficient to prove
thus for b1 being set
for b2 being Relation of a2 . b1,a2 . b1
st b1 in a1 & a3 . b1 = b2
holds b2 is symmetric transitive total Relation of a2 . b1,a2 . b1;
:: MSUALG_4:def 3
theorem
for b1 being set
for b2 being ManySortedSet of b1
for b3 being ManySortedRelation of b2,b2 holds
b3 is MSEquivalence_Relation-like(b1, b2)
iff
for b4 being set
for b5 being Relation of b2 . b4,b2 . b4
st b4 in b1 & b3 . b4 = b5
holds b5 is symmetric transitive total Relation of b2 . b4,b2 . b4;
:: MSUALG_4:funcnot 1 => MSUALG_4:func 1
definition
let a1 be non empty set;
let a2, a3 be ManySortedSet of a1;
let a4 be ManySortedRelation of a2,a3;
let a5 be Element of a1;
redefine func a4 . a5 -> Relation of a2 . a5,a3 . a5;
end;
:: MSUALG_4:modenot 4
definition
let a1 be non empty ManySortedSign;
let a2 be MSAlgebra over a1;
mode ManySortedRelation of a2 is ManySortedRelation of the Sorts of a2,the Sorts of a2;
end;
:: MSUALG_4:attrnot 3 => MSUALG_4:attr 3
definition
let a1 be non empty ManySortedSign;
let a2 be MSAlgebra over a1;
let a3 be ManySortedRelation of the Sorts of a2,the Sorts of a2;
attr a3 is MSEquivalence-like means
a3 is MSEquivalence_Relation-like(the carrier of a1, the Sorts of a2);
end;
:: MSUALG_4:dfs 4
definiens
let a1 be non empty ManySortedSign;
let a2 be MSAlgebra over a1;
let a3 be ManySortedRelation of the Sorts of a2,the Sorts of a2;
To prove
a3 is MSEquivalence-like
it is sufficient to prove
thus a3 is MSEquivalence_Relation-like(the carrier of a1, the Sorts of a2);
:: MSUALG_4:def 5
theorem
for b1 being non empty ManySortedSign
for b2 being MSAlgebra over b1
for b3 being ManySortedRelation of the Sorts of b2,the Sorts of b2 holds
b3 is MSEquivalence-like(b1, b2)
iff
b3 is MSEquivalence_Relation-like(the carrier of b1, the Sorts of b2);
:: MSUALG_4:exreg 2
registration
let a1 be non empty non void ManySortedSign;
let a2 be MSAlgebra over a1;
cluster Relation-like Function-like Relation-yielding MSEquivalence-like ManySortedRelation of the Sorts of a2,the Sorts of a2;
end;
:: MSUALG_4:th 1
theorem
for b1 being non empty non void ManySortedSign
for b2 being MSAlgebra over b1
for b3 being Element of the carrier of b1
for b4 being MSEquivalence-like ManySortedRelation of the Sorts of b2,the Sorts of b2 holds
b4 . b3 is symmetric transitive total Relation of (the Sorts of b2) . b3,(the Sorts of b2) . b3;
:: MSUALG_4:attrnot 4 => MSUALG_4:attr 4
definition
let a1 be non empty non void ManySortedSign;
let a2 be non-empty MSAlgebra over a1;
let a3 be MSEquivalence-like ManySortedRelation of the Sorts of a2,the Sorts of a2;
attr a3 is MSCongruence-like means
for b1 being Element of the OperSymbols of a1
for b2, b3 being Element of Args(b1,a2)
st for b4 being natural set
st b4 in proj1 b2
holds [b2 . b4,b3 . b4] in a3 . ((the_arity_of b1) /. b4)
holds [(Den(b1,a2)) . b2,(Den(b1,a2)) . b3] in a3 . the_result_sort_of b1;
end;
:: MSUALG_4:dfs 5
definiens
let a1 be non empty non void ManySortedSign;
let a2 be non-empty MSAlgebra over a1;
let a3 be MSEquivalence-like ManySortedRelation of the Sorts of a2,the Sorts of a2;
To prove
a3 is MSCongruence-like
it is sufficient to prove
thus for b1 being Element of the OperSymbols of a1
for b2, b3 being Element of Args(b1,a2)
st for b4 being natural set
st b4 in proj1 b2
holds [b2 . b4,b3 . b4] in a3 . ((the_arity_of b1) /. b4)
holds [(Den(b1,a2)) . b2,(Den(b1,a2)) . b3] in a3 . the_result_sort_of b1;
:: MSUALG_4:def 6
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being MSEquivalence-like ManySortedRelation of the Sorts of b2,the Sorts of b2 holds
b3 is MSCongruence-like(b1, b2)
iff
for b4 being Element of the OperSymbols of b1
for b5, b6 being Element of Args(b4,b2)
st for b7 being natural set
st b7 in proj1 b5
holds [b5 . b7,b6 . b7] in b3 . ((the_arity_of b4) /. b7)
holds [(Den(b4,b2)) . b5,(Den(b4,b2)) . b6] in b3 . the_result_sort_of b4;
:: MSUALG_4:exreg 3
registration
let a1 be non empty non void ManySortedSign;
let a2 be non-empty MSAlgebra over a1;
cluster Relation-like Function-like Relation-yielding MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of a2,the Sorts of a2;
end;
:: MSUALG_4:modenot 5
definition
let a1 be non empty non void ManySortedSign;
let a2 be non-empty MSAlgebra over a1;
mode MSCongruence of a2 is MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of a2,the Sorts of a2;
end;
:: MSUALG_4:funcnot 2 => MSUALG_4:func 2
definition
let a1 be non empty non void ManySortedSign;
let a2 be MSAlgebra over a1;
let a3 be MSEquivalence-like ManySortedRelation of the Sorts of a2,the Sorts of a2;
let a4 be Element of the carrier of a1;
redefine func a3 . a4 -> symmetric transitive total Relation of (the Sorts of a2) . a4,(the Sorts of a2) . a4;
end;
:: MSUALG_4:funcnot 3 => MSUALG_4:func 3
definition
let a1 be non empty non void ManySortedSign;
let a2 be MSAlgebra over a1;
let a3 be MSEquivalence-like ManySortedRelation of the Sorts of a2,the Sorts of a2;
let a4 be Element of the carrier of a1;
let a5 be Element of (the Sorts of a2) . a4;
func Class(A3,A5) -> Element of bool ((the Sorts of a2) . a4) equals
Class(a3 . a4,a5);
end;
:: MSUALG_4:def 7
theorem
for b1 being non empty non void ManySortedSign
for b2 being MSAlgebra over b1
for b3 being MSEquivalence-like ManySortedRelation of the Sorts of b2,the Sorts of b2
for b4 being Element of the carrier of b1
for b5 being Element of (the Sorts of b2) . b4 holds
Class(b3,b5) = Class(b3 . b4,b5);
:: MSUALG_4:funcnot 4 => MSUALG_4:func 4
definition
let a1 be non empty non void ManySortedSign;
let a2 be non-empty MSAlgebra over a1;
let a3 be MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of a2,the Sorts of a2;
func Class A3 -> non-empty ManySortedSet of the carrier of a1 means
for b1 being Element of the carrier of a1 holds
it . b1 = Class (a3 . b1);
end;
:: MSUALG_4:def 8
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of b2,the Sorts of b2
for b4 being non-empty ManySortedSet of the carrier of b1 holds
b4 = Class b3
iff
for b5 being Element of the carrier of b1 holds
b4 . b5 = Class (b3 . b5);
:: MSUALG_4:funcnot 5 => MSUALG_4:func 5
definition
let a1 be non empty non void ManySortedSign;
let a2, a3 be ManySortedSet of the OperSymbols of a1;
let a4 be ManySortedFunction of a2,a3;
let a5 be Element of the OperSymbols of a1;
redefine func a4 . a5 -> Function-like quasi_total Relation of a2 . a5,a3 . a5;
end;
:: MSUALG_4:funcnot 6 => MSUALG_4:func 6
definition
let a1 be non empty set;
let a2 be FinSequence of a1;
let a3 be ManySortedSet of a1;
redefine func a3 * a2 -> ManySortedSet of dom a2;
end;
:: MSUALG_4:funcnot 7 => MSUALG_4:func 7
definition
let a1 be non empty non void ManySortedSign;
let a2 be Element of the OperSymbols of a1;
let a3 be non-empty MSAlgebra over a1;
let a4 be MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of a3,the Sorts of a3;
let a5 be Element of Args(a2,a3);
func A4 # A5 -> Element of product ((Class a4) * the_arity_of a2) means
for b1 being natural set
st b1 in dom the_arity_of a2
holds it . b1 = Class(a4 . ((the_arity_of a2) /. b1),a5 . b1);
end;
:: MSUALG_4:def 9
theorem
for b1 being non empty non void ManySortedSign
for b2 being Element of the OperSymbols of b1
for b3 being non-empty MSAlgebra over b1
for b4 being MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of b3,the Sorts of b3
for b5 being Element of Args(b2,b3)
for b6 being Element of product ((Class b4) * the_arity_of b2) holds
b6 = b4 # b5
iff
for b7 being natural set
st b7 in dom the_arity_of b2
holds b6 . b7 = Class(b4 . ((the_arity_of b2) /. b7),b5 . b7);
:: MSUALG_4:funcnot 8 => MSUALG_4:func 8
definition
let a1 be non empty non void ManySortedSign;
let a2 be Element of the OperSymbols of a1;
let a3 be non-empty MSAlgebra over a1;
let a4 be MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of a3,the Sorts of a3;
func QuotRes(A4,A2) -> Function-like quasi_total Relation of ((the Sorts of a3) * the ResultSort of a1) . a2,((Class a4) * the ResultSort of a1) . a2 means
for b1 being Element of (the Sorts of a3) . the_result_sort_of a2 holds
it . b1 = Class(a4,b1);
end;
:: MSUALG_4:def 10
theorem
for b1 being non empty non void ManySortedSign
for b2 being Element of the OperSymbols of b1
for b3 being non-empty MSAlgebra over b1
for b4 being MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of b3,the Sorts of b3
for b5 being Function-like quasi_total Relation of ((the Sorts of b3) * the ResultSort of b1) . b2,((Class b4) * the ResultSort of b1) . b2 holds
b5 = QuotRes(b4,b2)
iff
for b6 being Element of (the Sorts of b3) . the_result_sort_of b2 holds
b5 . b6 = Class(b4,b6);
:: MSUALG_4:funcnot 9 => MSUALG_4:func 9
definition
let a1 be non empty non void ManySortedSign;
let a2 be Element of the OperSymbols of a1;
let a3 be non-empty MSAlgebra over a1;
let a4 be MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of a3,the Sorts of a3;
func QuotArgs(A4,A2) -> Function-like quasi_total Relation of ((the Sorts of a3) # * the Arity of a1) . a2,((Class a4) # * the Arity of a1) . a2 means
for b1 being Element of Args(a2,a3) holds
it . b1 = a4 # b1;
end;
:: MSUALG_4:def 11
theorem
for b1 being non empty non void ManySortedSign
for b2 being Element of the OperSymbols of b1
for b3 being non-empty MSAlgebra over b1
for b4 being MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of b3,the Sorts of b3
for b5 being Function-like quasi_total Relation of ((the Sorts of b3) # * the Arity of b1) . b2,((Class b4) # * the Arity of b1) . b2 holds
b5 = QuotArgs(b4,b2)
iff
for b6 being Element of Args(b2,b3) holds
b5 . b6 = b4 # b6;
:: MSUALG_4:funcnot 10 => MSUALG_4:func 10
definition
let a1 be non empty non void ManySortedSign;
let a2 be non-empty MSAlgebra over a1;
let a3 be MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of a2,the Sorts of a2;
func QuotRes A3 -> ManySortedFunction of (the Sorts of a2) * the ResultSort of a1,(Class a3) * the ResultSort of a1 means
for b1 being Element of the OperSymbols of a1 holds
it . b1 = QuotRes(a3,b1);
end;
:: MSUALG_4:def 12
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of b2,the Sorts of b2
for b4 being ManySortedFunction of (the Sorts of b2) * the ResultSort of b1,(Class b3) * the ResultSort of b1 holds
b4 = QuotRes b3
iff
for b5 being Element of the OperSymbols of b1 holds
b4 . b5 = QuotRes(b3,b5);
:: MSUALG_4:funcnot 11 => MSUALG_4:func 11
definition
let a1 be non empty non void ManySortedSign;
let a2 be non-empty MSAlgebra over a1;
let a3 be MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of a2,the Sorts of a2;
func QuotArgs A3 -> ManySortedFunction of (the Sorts of a2) # * the Arity of a1,(Class a3) # * the Arity of a1 means
for b1 being Element of the OperSymbols of a1 holds
it . b1 = QuotArgs(a3,b1);
end;
:: MSUALG_4:def 13
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of b2,the Sorts of b2
for b4 being ManySortedFunction of (the Sorts of b2) # * the Arity of b1,(Class b3) # * the Arity of b1 holds
b4 = QuotArgs b3
iff
for b5 being Element of the OperSymbols of b1 holds
b4 . b5 = QuotArgs(b3,b5);
:: MSUALG_4:th 2
theorem
for b1 being non empty non void ManySortedSign
for b2 being Element of the OperSymbols of b1
for b3 being non-empty MSAlgebra over b1
for b4 being MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of b3,the Sorts of b3
for b5 being set
st b5 in ((Class b4) # * the Arity of b1) . b2
holds ex b6 being Element of Args(b2,b3) st
b5 = b4 # b6;
:: MSUALG_4:funcnot 12 => MSUALG_4:func 12
definition
let a1 be non empty non void ManySortedSign;
let a2 be Element of the OperSymbols of a1;
let a3 be non-empty MSAlgebra over a1;
let a4 be MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of a3,the Sorts of a3;
func QuotCharact(A4,A2) -> Function-like quasi_total Relation of ((Class a4) # * the Arity of a1) . a2,((Class a4) * the ResultSort of a1) . a2 means
for b1 being Element of Args(a2,a3)
st a4 # b1 in ((Class a4) # * the Arity of a1) . a2
holds it . (a4 # b1) = ((QuotRes(a4,a2)) * Den(a2,a3)) . b1;
end;
:: MSUALG_4:def 14
theorem
for b1 being non empty non void ManySortedSign
for b2 being Element of the OperSymbols of b1
for b3 being non-empty MSAlgebra over b1
for b4 being MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of b3,the Sorts of b3
for b5 being Function-like quasi_total Relation of ((Class b4) # * the Arity of b1) . b2,((Class b4) * the ResultSort of b1) . b2 holds
b5 = QuotCharact(b4,b2)
iff
for b6 being Element of Args(b2,b3)
st b4 # b6 in ((Class b4) # * the Arity of b1) . b2
holds b5 . (b4 # b6) = ((QuotRes(b4,b2)) * Den(b2,b3)) . b6;
:: MSUALG_4:funcnot 13 => MSUALG_4:func 13
definition
let a1 be non empty non void ManySortedSign;
let a2 be non-empty MSAlgebra over a1;
let a3 be MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of a2,the Sorts of a2;
func QuotCharact A3 -> ManySortedFunction of (Class a3) # * the Arity of a1,(Class a3) * the ResultSort of a1 means
for b1 being Element of the OperSymbols of a1 holds
it . b1 = QuotCharact(a3,b1);
end;
:: MSUALG_4:def 15
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of b2,the Sorts of b2
for b4 being ManySortedFunction of (Class b3) # * the Arity of b1,(Class b3) * the ResultSort of b1 holds
b4 = QuotCharact b3
iff
for b5 being Element of the OperSymbols of b1 holds
b4 . b5 = QuotCharact(b3,b5);
:: MSUALG_4:funcnot 14 => MSUALG_4:func 14
definition
let a1 be non empty non void ManySortedSign;
let a2 be non-empty MSAlgebra over a1;
let a3 be MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of a2,the Sorts of a2;
func QuotMSAlg(A2,A3) -> MSAlgebra over a1 equals
MSAlgebra(#Class a3,QuotCharact a3#);
end;
:: MSUALG_4:def 16
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of b2,the Sorts of b2 holds
QuotMSAlg(b2,b3) = MSAlgebra(#Class b3,QuotCharact b3#);
:: MSUALG_4:funcreg 1
registration
let a1 be non empty non void ManySortedSign;
let a2 be non-empty MSAlgebra over a1;
let a3 be MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of a2,the Sorts of a2;
cluster QuotMSAlg(a2,a3) -> strict non-empty;
end;
:: MSUALG_4:funcnot 15 => MSUALG_4:func 15
definition
let a1 be non empty non void ManySortedSign;
let a2 be non-empty MSAlgebra over a1;
let a3 be MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of a2,the Sorts of a2;
let a4 be Element of the carrier of a1;
func MSNat_Hom(A2,A3,A4) -> Function-like quasi_total Relation of (the Sorts of a2) . a4,(Class a3) . a4 means
for b1 being set
st b1 in (the Sorts of a2) . a4
holds it . b1 = Class(a3 . a4,b1);
end;
:: MSUALG_4:def 17
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of b2,the Sorts of b2
for b4 being Element of the carrier of b1
for b5 being Function-like quasi_total Relation of (the Sorts of b2) . b4,(Class b3) . b4 holds
b5 = MSNat_Hom(b2,b3,b4)
iff
for b6 being set
st b6 in (the Sorts of b2) . b4
holds b5 . b6 = Class(b3 . b4,b6);
:: MSUALG_4:funcnot 16 => MSUALG_4:func 16
definition
let a1 be non empty non void ManySortedSign;
let a2 be non-empty MSAlgebra over a1;
let a3 be MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of a2,the Sorts of a2;
func MSNat_Hom(A2,A3) -> ManySortedFunction of the Sorts of a2,the Sorts of QuotMSAlg(a2,a3) means
for b1 being Element of the carrier of a1 holds
it . b1 = MSNat_Hom(a2,a3,b1);
end;
:: MSUALG_4:def 18
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of b2,the Sorts of b2
for b4 being ManySortedFunction of the Sorts of b2,the Sorts of QuotMSAlg(b2,b3) holds
b4 = MSNat_Hom(b2,b3)
iff
for b5 being Element of the carrier of b1 holds
b4 . b5 = MSNat_Hom(b2,b3,b5);
:: MSUALG_4:th 3
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of b2,the Sorts of b2 holds
MSNat_Hom(b2,b3) is_epimorphism b2,QuotMSAlg(b2,b3);
:: MSUALG_4:funcnot 17 => MSUALG_4:func 17
definition
let a1 be non empty non void ManySortedSign;
let a2, a3 be non-empty MSAlgebra over a1;
let a4 be ManySortedFunction of the Sorts of a2,the Sorts of a3;
let a5 be Element of the carrier of a1;
func MSCng(A4,A5) -> symmetric transitive total Relation of (the Sorts of a2) . a5,(the Sorts of a2) . a5 means
for b1, b2 being Element of (the Sorts of a2) . a5 holds
[b1,b2] in it
iff
(a4 . a5) . b1 = (a4 . a5) . b2;
end;
:: MSUALG_4:def 19
theorem
for b1 being non empty non void ManySortedSign
for b2, b3 being non-empty MSAlgebra over b1
for b4 being ManySortedFunction of the Sorts of b2,the Sorts of b3
for b5 being Element of the carrier of b1
for b6 being symmetric transitive total Relation of (the Sorts of b2) . b5,(the Sorts of b2) . b5 holds
b6 = MSCng(b4,b5)
iff
for b7, b8 being Element of (the Sorts of b2) . b5 holds
[b7,b8] in b6
iff
(b4 . b5) . b7 = (b4 . b5) . b8;
:: MSUALG_4:funcnot 18 => MSUALG_4:func 18
definition
let a1 be non empty non void ManySortedSign;
let a2, a3 be non-empty MSAlgebra over a1;
let a4 be ManySortedFunction of the Sorts of a2,the Sorts of a3;
assume a4 is_homomorphism a2,a3;
func MSCng A4 -> MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of a2,the Sorts of a2 means
for b1 being Element of the carrier of a1 holds
it . b1 = MSCng(a4,b1);
end;
:: MSUALG_4:def 20
theorem
for b1 being non empty non void ManySortedSign
for b2, b3 being non-empty MSAlgebra over b1
for b4 being ManySortedFunction of the Sorts of b2,the Sorts of b3
st b4 is_homomorphism b2,b3
for b5 being MSEquivalence-like MSCongruence-like ManySortedRelation of the Sorts of b2,the Sorts of b2 holds
b5 = MSCng b4
iff
for b6 being Element of the carrier of b1 holds
b5 . b6 = MSCng(b4,b6);
:: MSUALG_4:funcnot 19 => MSUALG_4:func 19
definition
let a1 be non empty non void ManySortedSign;
let a2, a3 be non-empty MSAlgebra over a1;
let a4 be ManySortedFunction of the Sorts of a2,the Sorts of a3;
let a5 be Element of the carrier of a1;
assume a4 is_homomorphism a2,a3;
func MSHomQuot(A4,A5) -> Function-like quasi_total Relation of (the Sorts of QuotMSAlg(a2,MSCng a4)) . a5,(the Sorts of a3) . a5 means
for b1 being Element of (the Sorts of a2) . a5 holds
it . Class(MSCng(a4,a5),b1) = (a4 . a5) . b1;
end;
:: MSUALG_4:def 21
theorem
for b1 being non empty non void ManySortedSign
for b2, b3 being non-empty MSAlgebra over b1
for b4 being ManySortedFunction of the Sorts of b2,the Sorts of b3
for b5 being Element of the carrier of b1
st b4 is_homomorphism b2,b3
for b6 being Function-like quasi_total Relation of (the Sorts of QuotMSAlg(b2,MSCng b4)) . b5,(the Sorts of b3) . b5 holds
b6 = MSHomQuot(b4,b5)
iff
for b7 being Element of (the Sorts of b2) . b5 holds
b6 . Class(MSCng(b4,b5),b7) = (b4 . b5) . b7;
:: MSUALG_4:funcnot 20 => MSUALG_4:func 20
definition
let a1 be non empty non void ManySortedSign;
let a2, a3 be non-empty MSAlgebra over a1;
let a4 be ManySortedFunction of the Sorts of a2,the Sorts of a3;
func MSHomQuot A4 -> ManySortedFunction of the Sorts of QuotMSAlg(a2,MSCng a4),the Sorts of a3 means
for b1 being Element of the carrier of a1 holds
it . b1 = MSHomQuot(a4,b1);
end;
:: MSUALG_4:def 22
theorem
for b1 being non empty non void ManySortedSign
for b2, b3 being non-empty MSAlgebra over b1
for b4 being ManySortedFunction of the Sorts of b2,the Sorts of b3
for b5 being ManySortedFunction of the Sorts of QuotMSAlg(b2,MSCng b4),the Sorts of b3 holds
b5 = MSHomQuot b4
iff
for b6 being Element of the carrier of b1 holds
b5 . b6 = MSHomQuot(b4,b6);
:: MSUALG_4:th 4
theorem
for b1 being non empty non void ManySortedSign
for b2, b3 being non-empty MSAlgebra over b1
for b4 being ManySortedFunction of the Sorts of b2,the Sorts of b3
st b4 is_homomorphism b2,b3
holds MSHomQuot b4 is_monomorphism QuotMSAlg(b2,MSCng b4),b3;
:: MSUALG_4:th 5
theorem
for b1 being non empty non void ManySortedSign
for b2, b3 being non-empty MSAlgebra over b1
for b4 being ManySortedFunction of the Sorts of b2,the Sorts of b3
st b4 is_epimorphism b2,b3
holds MSHomQuot b4 is_isomorphism QuotMSAlg(b2,MSCng b4),b3;
:: MSUALG_4:th 6
theorem
for b1 being non empty non void ManySortedSign
for b2, b3 being non-empty MSAlgebra over b1
for b4 being ManySortedFunction of the Sorts of b2,the Sorts of b3
st b4 is_epimorphism b2,b3
holds QuotMSAlg(b2,MSCng b4),b3 are_isomorphic;