:: Translations, Endomorphisms, and Stable Equational Theories :: by Grzegorz Bancerek :: :: Received February 9, 1996 :: Copyright (c) 1996-2021 Association of Mizar Users :: (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland). :: This code can be distributed under the GNU General Public Licence :: version 3.0 or later, or the Creative Commons Attribution-ShareAlike :: License version 3.0 or later, subject to the binding interpretation :: detailed in file COPYING.interpretation. :: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these :: licenses, or see http://www.gnu.org/licenses/gpl.html and :: http://creativecommons.org/licenses/by-sa/3.0/. environ vocabularies NUMBERS, XBOOLE_0, MSUALG_1, SUBSET_1, FUNCT_1, PBOOLE, MEMBER_1, RELAT_1, STRUCT_0, CARD_3, MARGREL1, PARTFUN1, MOD_4, MSUALG_3, NAT_1, FUNCT_4, RLTOPSP1, TARSKI, REWRITE1, FUNCOP_1, FINSEQ_1, ARYTM_3, FUNCT_7, CARD_1, XXREAL_0, ORDINAL4, MSUALG_4, CIRCUIT2, MCART_1, ZFMISC_1, EQREL_1, RELAT_2, MSUALG_5, MSUALG_6; notations TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, ORDINAL1, NUMBERS, XCMPLX_0, NAT_1, XTUPLE_0, MCART_1, STRUCT_0, RELAT_1, RELAT_2, RELSET_1, EQREL_1, REWRITE1, FUNCT_1, PBOOLE, PARTFUN1, FUNCT_2, FINSEQ_1, CARD_3, FUNCOP_1, MSUALG_1, MSUALG_3, MSUALG_4, MSUALG_5, FUNCT_7, XXREAL_0; constructors NAT_1, NAT_D, REWRITE1, FUNCT_7, MSUALG_3, MSUALG_5, RELSET_1, XTUPLE_0; registrations XBOOLE_0, RELAT_1, FUNCT_1, PARTFUN1, FUNCT_2, FUNCOP_1, XXREAL_0, XREAL_0, NAT_1, FINSEQ_1, PBOOLE, REWRITE1, FUNCT_7, STRUCT_0, MSUALG_1, MSUALG_3, MSUALG_4, MSUALG_5, ORDINAL1, CARD_1, RELSET_1, XTUPLE_0; requirements NUMERALS, REAL, BOOLE, SUBSET, ARITHM; begin :: Endomorphisms and translations definition let S be non empty ManySortedSign; let A be MSAlgebra over S; let s be SortSymbol of S; mode Element of A,s is Element of (the Sorts of A).s; end; definition let I be set; let A be ManySortedSet of I; let h1,h2 be ManySortedFunction of A,A; redefine func h2**h1 -> ManySortedFunction of A,A; end; theorem :: MSUALG_6:1 for S being non empty non void ManySortedSign for A being MSAlgebra over S for o being OperSymbol of S, a being set st a in Args(o,A) holds a is Function; theorem :: MSUALG_6:2 for S being non empty non void ManySortedSign for A being MSAlgebra over S for o being OperSymbol of S, a being Function st a in Args(o,A ) holds dom a = dom the_arity_of o & for i being set st i in dom the_arity_of o holds a.i in (the Sorts of A).((the_arity_of o)/.i); definition let S be non empty non void ManySortedSign; let A be MSAlgebra over S; attr A is feasible means :: MSUALG_6:def 1 for o being OperSymbol of S st Args(o,A) <> {} holds Result(o,A) <> {}; end; theorem :: MSUALG_6:3 for S being non empty non void ManySortedSign for o being OperSymbol of S for A being MSAlgebra over S holds Args(o,A) <> {} iff for i being Element of NAT st i in dom the_arity_of o holds (the Sorts of A).(( the_arity_of o)/.i) <> {}; registration let S be non empty non void ManySortedSign; cluster non-empty -> feasible for MSAlgebra over S; end; registration let S be non empty non void ManySortedSign; cluster non-empty for MSAlgebra over S; end; definition let S be non empty non void ManySortedSign; let A be MSAlgebra over S; mode Endomorphism of A -> ManySortedFunction of A,A means :: MSUALG_6:def 2 it is_homomorphism A,A; end; reserve S for non empty non void ManySortedSign, A for MSAlgebra over S; theorem :: MSUALG_6:4 id the Sorts of A is Endomorphism of A; theorem :: MSUALG_6:5 for h1,h2 being ManySortedFunction of A,A for o being OperSymbol of S for a being Element of Args(o,A) st a in Args(o,A) holds h2#(h1#a) = (h2** h1)#a; theorem :: MSUALG_6:6 for h1,h2 being Endomorphism of A holds h2**h1 is Endomorphism of A; definition let S be non empty non void ManySortedSign; let A be MSAlgebra over S; let h1,h2 be Endomorphism of A; redefine func h2**h1 -> Endomorphism of A; end; definition let S be non empty non void ManySortedSign; func TranslationRel S -> Relation of the carrier of S means :: MSUALG_6:def 3 for s1, s2 being SortSymbol of S holds [s1,s2] in it iff ex o being OperSymbol of S st the_result_sort_of o = s2 & ex i being Element of NAT st i in dom the_arity_of o & (the_arity_of o)/.i = s1; end; theorem :: MSUALG_6:7 for S being non empty non void ManySortedSign, o being OperSymbol of S for A being MSAlgebra over S, a being Function st a in Args(o,A) for i being Nat, x being Element of A,(the_arity_of o)/.i holds a+*(i,x) in Args(o,A); theorem :: MSUALG_6:8 for A1,A2 being MSAlgebra over S, h being ManySortedFunction of A1,A2 for o being OperSymbol of S st Args(o,A1) <> {} & Args(o,A2) <> {} for i being Element of NAT st i in dom the_arity_of o for x being Element of A1,( the_arity_of o)/.i holds h.((the_arity_of o)/.i).x in (the Sorts of A2).(( the_arity_of o)/.i); theorem :: MSUALG_6:9 for S being non empty non void ManySortedSign, o being OperSymbol of S for i being Element of NAT st i in dom the_arity_of o for A1,A2 being MSAlgebra over S for h being ManySortedFunction of A1,A2 for a,b being Element of Args(o,A1) st a in Args(o,A1) & h#a in Args(o,A2) for f,g1,g2 being Function st f = a & g1 = h#a & g2 = h#b for x being Element of A1,((the_arity_of o)/.i) st b = f+*(i,x) holds g2.i = h.((the_arity_of o)/.i).x & h#b = g1+*(i,g2.i); definition let S be non empty non void ManySortedSign, o be OperSymbol of S; let i be Nat; let A be MSAlgebra over S; let a be Function; func transl(o,i,a,A) -> Function means :: MSUALG_6:def 4 dom it = (the Sorts of A).((the_arity_of o)/.i) & for x being object st x in (the Sorts of A).((the_arity_of o )/.i) holds it.x = Den(o,A).(a+*(i,x)); end; theorem :: MSUALG_6:10 for S being non empty non void ManySortedSign, o being OperSymbol of S for i being Element of NAT for A being feasible MSAlgebra over S, a being Function st a in Args(o,A) holds transl(o,i,a,A) is Function of (the Sorts of A).((the_arity_of o)/.i), (the Sorts of A).the_result_sort_of o; definition let S be non empty non void ManySortedSign, s1,s2 be SortSymbol of S; let A be MSAlgebra over S; let f be Function; pred f is_e.translation_of A,s1,s2 means :: MSUALG_6:def 5 ex o being OperSymbol of S st the_result_sort_of o = s2 & ex i being Element of NAT st i in dom the_arity_of o & ((the_arity_of o)/.i) = s1 & ex a being Function st a in Args( o,A) & f = transl(o,i,a,A); end; theorem :: MSUALG_6:11 for S being non empty non void ManySortedSign, s1,s2 being SortSymbol of S for A being feasible MSAlgebra over S, f being Function st f is_e.translation_of A,s1,s2 holds f is Function of (the Sorts of A).s1, (the Sorts of A).s2 & (the Sorts of A).s1 <> {} & (the Sorts of A).s2 <> {}; theorem :: MSUALG_6:12 for S being non empty non void ManySortedSign, s1,s2 being SortSymbol of S for A being MSAlgebra over S, f being Function st f is_e.translation_of A,s1,s2 holds [s1,s2] in TranslationRel S; theorem :: MSUALG_6:13 for S being non empty non void ManySortedSign, s1,s2 being SortSymbol of S for A being non-empty MSAlgebra over S st [s1,s2] in TranslationRel S ex f being Function st f is_e.translation_of A,s1,s2; theorem :: MSUALG_6:14 for S being non empty non void ManySortedSign for A being feasible MSAlgebra over S for s1,s2 being SortSymbol of S for q being RedSequence of TranslationRel S, p being Function-yielding FinSequence st len q = len p+1 & s1 = q.1 & s2 = q.len q & for i being (Element of NAT), f being Function, s1,s2 being SortSymbol of S st i in dom p & f = p.i & s1 = q.i & s2 = q.(i+1) holds f is_e.translation_of A,s1,s2 holds compose(p, (the Sorts of A). s1) is Function of (the Sorts of A).s1, (the Sorts of A).s2 & (p <> {} implies (the Sorts of A).s1 <> {} & (the Sorts of A).s2 <> {}); definition let S be non empty non void ManySortedSign; let A be non-empty MSAlgebra over S; let s1,s2 be SortSymbol of S such that TranslationRel S reduces s1,s2; mode Translation of A,s1,s2 -> Function of (the Sorts of A).s1,(the Sorts of A).s2 means :: MSUALG_6:def 6 ex q being RedSequence of TranslationRel S, p being Function-yielding FinSequence st it = compose(p, (the Sorts of A).s1) & len q = len p+1 & s1 = q.1 & s2 = q.len q & for i being (Element of NAT), f being Function, s1,s2 being SortSymbol of S st i in dom p & f = p.i & s1 = q.i & s2 = q.(i+1) holds f is_e.translation_of A,s1,s2; end; theorem :: MSUALG_6:15 for S being non empty non void ManySortedSign for A being non-empty MSAlgebra over S for s1,s2 being SortSymbol of S st TranslationRel S reduces s1 ,s2 for q being RedSequence of TranslationRel S, p being Function-yielding FinSequence st len q = len p+1 & s1 = q.1 & s2 = q.len q & for i being (Element of NAT), f being Function, s1,s2 being SortSymbol of S st i in dom p & f = p.i & s1 = q.i & s2 = q.(i+1) holds f is_e.translation_of A,s1,s2 holds compose(p, (the Sorts of A).s1) is Translation of A,s1,s2; reserve A for non-empty MSAlgebra over S; theorem :: MSUALG_6:16 for s being SortSymbol of S holds id ((the Sorts of A).s) is Translation of A,s,s; theorem :: MSUALG_6:17 for s1,s2 being SortSymbol of S, f being Function st f is_e.translation_of A,s1,s2 holds TranslationRel S reduces s1,s2 & f is Translation of A,s1,s2; theorem :: MSUALG_6:18 for s1,s2,s3 being SortSymbol of S st TranslationRel S reduces s1,s2 & TranslationRel S reduces s2,s3 for t1 being Translation of A,s1,s2 for t2 being Translation of A,s2,s3 holds t2*t1 is Translation of A,s1,s3; theorem :: MSUALG_6:19 for s1,s2,s3 being SortSymbol of S st TranslationRel S reduces s1,s2 for t being Translation of A,s1,s2 for f being Function st f is_e.translation_of A,s2,s3 holds f*t is Translation of A,s1,s3; theorem :: MSUALG_6:20 for s1,s2,s3 being SortSymbol of S st TranslationRel S reduces s2,s3 for f being Function st f is_e.translation_of A,s1,s2 for t being Translation of A,s2,s3 holds t*f is Translation of A,s1,s3; scheme :: MSUALG_6:sch 1 TranslationInd {S() -> non empty non void ManySortedSign, A() -> non-empty MSAlgebra over S(), P[set,set,set]}: for s1,s2 being SortSymbol of S() st TranslationRel S() reduces s1,s2 for t being Translation of A(),s1,s2 holds P[t ,s1,s2] provided for s being SortSymbol of S() holds P[id ((the Sorts of A()).s),s,s] and for s1,s2,s3 being SortSymbol of S() st TranslationRel S() reduces s1,s2 for t being Translation of A(),s1,s2 st P[t,s1,s2] for f being Function st f is_e.translation_of A(),s2,s3 holds P[f*t,s1,s3]; theorem :: MSUALG_6:21 for A1,A2 being non-empty MSAlgebra over S for h being ManySortedFunction of A1,A2 st h is_homomorphism A1,A2 for o being OperSymbol of S, i being Element of NAT st i in dom the_arity_of o for a being Element of Args(o,A1) holds (h.the_result_sort_of o)*transl(o,i,a,A1) = transl(o,i,h#a,A2) *(h.((the_arity_of o)/.i)); theorem :: MSUALG_6:22 for h being Endomorphism of A for o being OperSymbol of S, i being Element of NAT st i in dom the_arity_of o for a being Element of Args(o,A) holds (h.the_result_sort_of o)*transl(o,i,a,A) = transl(o,i,h#a,A)*(h.(( the_arity_of o)/.i)); theorem :: MSUALG_6:23 for A1,A2 being non-empty MSAlgebra over S for h being ManySortedFunction of A1,A2 st h is_homomorphism A1,A2 for s1,s2 being SortSymbol of S, t being Function st t is_e.translation_of A1,s1,s2 ex T being Function of (the Sorts of A2).s1, (the Sorts of A2).s2 st T is_e.translation_of A2,s1,s2 & T*(h.s1) = (h.s2)*t; theorem :: MSUALG_6:24 for h being Endomorphism of A for s1,s2 being SortSymbol of S, t being Function st t is_e.translation_of A,s1,s2 ex T being Function of (the Sorts of A).s1, (the Sorts of A).s2 st T is_e.translation_of A,s1,s2 & T*(h.s1) = (h.s2) *t; theorem :: MSUALG_6:25 for A1,A2 being non-empty MSAlgebra over S for h being ManySortedFunction of A1,A2 st h is_homomorphism A1,A2 for s1,s2 being SortSymbol of S st TranslationRel S reduces s1,s2 for t being Translation of A1 ,s1,s2 ex T being Translation of A2,s1,s2 st T*(h.s1) = (h.s2)*t; theorem :: MSUALG_6:26 for h being Endomorphism of A for s1,s2 being SortSymbol of S st TranslationRel S reduces s1,s2 for t being Translation of A,s1,s2 ex T being Translation of A,s1,s2 st T*(h.s1) = (h.s2)*t; begin :: Compatibility, invariantness, and stability definition let S be non empty non void ManySortedSign; let A be MSAlgebra over S; let R be ManySortedRelation of A; attr R is compatible means :: MSUALG_6:def 7 for o being OperSymbol of S, a,b being Function st a in Args(o,A) & b in Args(o,A) & (for n be Element of NAT st n in dom the_arity_of o holds [a.n,b.n] in R.((the_arity_of o)/.n)) holds [Den(o,A). a,Den(o,A).b] in R.(the_result_sort_of o); attr R is invariant means :: MSUALG_6:def 8 for s1,s2 being SortSymbol of S for t being Function st t is_e.translation_of A,s1,s2 for a,b being set st [a,b] in R .s1 holds [t.a, t.b] in R.s2; attr R is stable means :: MSUALG_6:def 9 for h being Endomorphism of A for s being SortSymbol of S for a,b being set st [a,b] in R.s holds [(h.s).a, (h.s).b] in R .s; end; theorem :: MSUALG_6:27 for R being MSEquivalence-like ManySortedRelation of A holds R is compatible iff R is MSCongruence of A; theorem :: MSUALG_6:28 for R being ManySortedRelation of A holds R is invariant iff for s1,s2 being SortSymbol of S st TranslationRel S reduces s1,s2 for f being Translation of A,s1,s2 for a,b being set st [a,b] in R.s1 holds [f.a,f.b] in R. s2; registration let S be non empty non void ManySortedSign; let A be non-empty MSAlgebra over S; cluster invariant -> compatible for MSEquivalence-like ManySortedRelation of A; cluster compatible -> invariant for MSEquivalence-like ManySortedRelation of A; end; registration let X be non empty set; cluster id X -> non empty; end; scheme :: MSUALG_6:sch 2 MSRExistence {I() -> non empty set, A() -> non-empty ManySortedSet of I(), P[object,object,object]}: ex R being ManySortedRelation of A() st for i being Element of I() for a,b being Element of A().i holds [a,b] in R.i iff P[i,a,b]; scheme :: MSUALG_6:sch 3 MSRLambdaU{I() -> set, A() -> ManySortedSet of I(), F(object) -> set}: (ex R being ManySortedRelation of A() st for i being object st i in I() holds R.i = F(i) ) & for R1,R2 being ManySortedRelation of A() st (for i being object st i in I() holds R1.i = F(i)) & (for i being object st i in I() holds R2.i = F(i)) holds R1 = R2 provided for i being set st i in I() holds F(i) is Relation of A().i, A().i; definition let I be set, A be ManySortedSet of I; func id(I,A) -> ManySortedRelation of A means :: MSUALG_6:def 10 for i being object st i in I holds it.i = id (A.i); end; registration let S be non empty non void ManySortedSign; let A be non-empty MSAlgebra over S; cluster MSEquivalence-like -> non-empty for ManySortedRelation of A; end; registration let S be non empty non void ManySortedSign; let A be non-empty MSAlgebra over S; cluster invariant stable MSEquivalence-like for ManySortedRelation of A; end; begin :: Invariant, stable, and invariant stable closure reserve S for non empty non void ManySortedSign, A for non-empty MSAlgebra over S, R for ManySortedRelation of the Sorts of A; scheme :: MSUALG_6:sch 4 MSRelCl {S() -> non empty non void ManySortedSign, A() -> non-empty MSAlgebra over S(), P[set,set,set], R[set], R,Q() -> ManySortedRelation of A()} : R[Q()] & R() c= Q() & for P being ManySortedRelation of A() st R[P] & R() c= P holds Q() c= P provided for R being ManySortedRelation of A() holds R[R] iff for s1,s2 being SortSymbol of S() for f being Function of (the Sorts of A()).s1,(the Sorts of A ()).s2 st P[f,s1,s2] for a,b being set st [a,b] in R.s1 holds [f.a,f.b] in R.s2 and for s1,s2,s3 being SortSymbol of S() for f1 being Function of (the Sorts of A()).s1,(the Sorts of A()).s2 for f2 being Function of (the Sorts of A ()).s2,(the Sorts of A()).s3 st P[f1,s1,s2] & P[f2,s2,s3] holds P[f2*f1,s1,s3] and for s being SortSymbol of S() holds P[id ((the Sorts of A()).s),s,s] and for s being SortSymbol of S(), a,b being Element of A(),s holds [a,b ] in Q().s iff ex s9 being SortSymbol of S(), f being Function of (the Sorts of A()).s9,(the Sorts of A()).s, x,y being Element of A(),s9 st P[f,s9,s] & [x,y] in R().s9 & a = f.x & b = f.y; definition let S be non empty non void ManySortedSign; let A be non-empty MSAlgebra over S; let R be ManySortedRelation of the Sorts of A; func InvCl R -> invariant ManySortedRelation of A means :: MSUALG_6:def 11 R c= it & for Q being invariant ManySortedRelation of A st R c= Q holds it c= Q; end; theorem :: MSUALG_6:29 for R being ManySortedRelation of the Sorts of A for s being SortSymbol of S for a,b being Element of A,s holds [a,b] in (InvCl R).s iff ex s9 being SortSymbol of S, x,y being Element of A,s9 st ex t being Translation of A,s9,s st TranslationRel S reduces s9,s & [x,y] in R.s9 & a = t.x & b = t.y; theorem :: MSUALG_6:30 for R being stable ManySortedRelation of A holds InvCl R is stable; definition let S be non empty non void ManySortedSign; let A be non-empty MSAlgebra over S; let R be ManySortedRelation of the Sorts of A; func StabCl R -> stable ManySortedRelation of A means :: MSUALG_6:def 12 R c= it & for Q being stable ManySortedRelation of A st R c= Q holds it c= Q; end; theorem :: MSUALG_6:31 for R being ManySortedRelation of the Sorts of A for s being SortSymbol of S for a,b being Element of A,s holds [a,b] in (StabCl R).s iff ex x,y being Element of A,s, h being Endomorphism of A st [x,y] in R.s & a = h.s.x & b = h.s.y; theorem :: MSUALG_6:32 InvCl StabCl R is stable; definition let S be non empty non void ManySortedSign; let A be non-empty MSAlgebra over S; let R be ManySortedRelation of the Sorts of A; func TRS R -> invariant stable ManySortedRelation of A means :: MSUALG_6:def 13 R c= it & for Q being invariant stable ManySortedRelation of A st R c= Q holds it c= Q; end; registration let S be non empty non void ManySortedSign; let A be non-empty MSAlgebra over S; let R be non-empty ManySortedRelation of A; cluster InvCl R -> non-empty; cluster StabCl R -> non-empty; cluster TRS R -> non-empty; end; theorem :: MSUALG_6:33 for R being invariant ManySortedRelation of A holds InvCl R = R; theorem :: MSUALG_6:34 for R being stable ManySortedRelation of A holds StabCl R = R; theorem :: MSUALG_6:35 for R being invariant stable ManySortedRelation of A holds TRS R = R; theorem :: MSUALG_6:36 StabCl R c= TRS R & InvCl R c= TRS R & StabCl InvCl R c= TRS R; theorem :: MSUALG_6:37 InvCl StabCl R = TRS R; theorem :: MSUALG_6:38 for R being ManySortedRelation of the Sorts of A for s being SortSymbol of S, a,b being Element of A,s holds [a,b] in (TRS R).s iff ex s9 being SortSymbol of S st TranslationRel S reduces s9, s & ex l,r being Element of A,s9, h being Endomorphism of A, t being Translation of A, s9, s st [l,r] in R.s9 & a = t.(h.s9.l) & b = t.(h.s9.r); begin :: Equational theory theorem :: MSUALG_6:39 for A being set for R,E being Relation of A st for a,b being set st a in A & b in A holds [a,b] in E iff a,b are_convertible_wrt R holds E is total symmetric transitive; theorem :: MSUALG_6:40 for A being set, R being Relation of A for E being Equivalence_Relation of A st R c= E for a,b being object st a in A & a,b are_convertible_wrt R holds [a,b] in E; theorem :: MSUALG_6:41 for A being non empty set, R being Relation of A for a,b being Element of A holds [a,b] in EqCl R iff a,b are_convertible_wrt R; theorem :: MSUALG_6:42 for S being non empty set, A being non-empty ManySortedSet of S for R being ManySortedRelation of A for s being Element of S for a,b being Element of A.s holds [a,b] in (EqCl R).s iff a,b are_convertible_wrt R.s; definition let S be non empty non void ManySortedSign; let A be non-empty MSAlgebra over S; mode EquationalTheory of A is stable invariant MSEquivalence-like ManySortedRelation of A; let R be ManySortedRelation of A; func EqCl(R,A) -> MSEquivalence-like ManySortedRelation of A equals :: MSUALG_6:def 14 EqCl R; end; theorem :: MSUALG_6:43 for R being ManySortedRelation of A holds R c= EqCl(R,A); theorem :: MSUALG_6:44 for R being ManySortedRelation of A for E being MSEquivalence-like ManySortedRelation of A st R c= E holds EqCl(R,A) c= E; theorem :: MSUALG_6:45 for R being stable ManySortedRelation of A for s being SortSymbol of S for a,b being Element of A,s st a,b are_convertible_wrt R.s for h being Endomorphism of A holds h.s.a, h.s.b are_convertible_wrt R.s; theorem :: MSUALG_6:46 for R being stable ManySortedRelation of A holds EqCl(R,A) is stable; registration let S,A; let R be stable ManySortedRelation of A; cluster EqCl(R,A) -> stable; end; theorem :: MSUALG_6:47 for R being invariant ManySortedRelation of A for s1,s2 being SortSymbol of S for a,b being Element of A,s1 st a,b are_convertible_wrt R.s1 for t being Function st t is_e.translation_of A,s1,s2 holds t.a, t.b are_convertible_wrt R.s2; theorem :: MSUALG_6:48 for R being invariant ManySortedRelation of A holds EqCl(R,A) is invariant; registration let S,A; let R be invariant ManySortedRelation of A; cluster EqCl(R,A) -> invariant; end; theorem :: MSUALG_6:49 for S being non empty set, A being non-empty ManySortedSet of S for R,E being ManySortedRelation of A st for s being Element of S for a,b being Element of A.s holds [a,b] in E.s iff a,b are_convertible_wrt R.s holds E is MSEquivalence_Relation-like; theorem :: MSUALG_6:50 for R,E being ManySortedRelation of A st for s being SortSymbol of S, a,b being Element of A,s holds [a,b] in E.s iff a,b are_convertible_wrt ( TRS R).s holds E is EquationalTheory of A; theorem :: MSUALG_6:51 for S being non empty set, A being non-empty ManySortedSet of S for R being ManySortedRelation of A for E being MSEquivalence_Relation-like ManySortedRelation of A st R c= E for s being Element of S for a,b being Element of A.s st a,b are_convertible_wrt R.s holds [a,b] in E.s; definition let S be non empty non void ManySortedSign; let A be non-empty MSAlgebra over S; let R be ManySortedRelation of the Sorts of A; func EqTh R -> EquationalTheory of A means :: MSUALG_6:def 15 R c= it & for Q being EquationalTheory of A st R c= Q holds it c= Q; end; theorem :: MSUALG_6:52 for R being ManySortedRelation of A holds EqCl(R,A) c= EqTh R & InvCl R c= EqTh R & StabCl R c= EqTh R & TRS R c= EqTh R; theorem :: MSUALG_6:53 for R being ManySortedRelation of A for s being SortSymbol of S, a,b being Element of A,s holds [a,b] in (EqTh R).s iff a,b are_convertible_wrt (TRS R).s; theorem :: MSUALG_6:54 for R being ManySortedRelation of A holds EqTh R = EqCl(TRS R,A);