:: Homomorphisms of Many Sorted Algebras :: by Ma{\l}gorzata Korolkiewicz :: :: Received April 25, 1994 :: Copyright (c) 1994-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 STRUCT_0, XBOOLE_0, MSUALG_1, NAT_1, PBOOLE, SUBSET_1, FUNCT_1, RELAT_1, MEMBER_1, CARD_3, MARGREL1, TARSKI, FUNCT_6, NUMBERS, FINSEQ_4, PARTFUN1, WELLORD1, GROUP_6, MSUALG_2, UNIALG_2, MSUALG_3; notations TARSKI, XBOOLE_0, XTUPLE_0, SUBSET_1, ORDINAL1, NUMBERS, NAT_1, RELAT_1, FUNCT_1, PBOOLE, PARTFUN1, FUNCT_2, FINSEQ_1, FINSEQ_2, CARD_3, FUNCT_6, STRUCT_0, PRALG_1, MSUALG_1, MSUALG_2, PRALG_2; constructors PRALG_1, MSUALG_2, PRALG_2, RELSET_1, FINSEQ_2, XTUPLE_0; registrations FUNCT_2, FUNCOP_1, CARD_3, FUNCT_1, STRUCT_0, MSUALG_1, MSUALG_2, ORDINAL1, RELAT_1, RELSET_1, PBOOLE, FINSEQ_1; requirements BOOLE, SUBSET; begin reserve S for non void non empty ManySortedSign, U1,U2 for MSAlgebra over S, o for OperSymbol of S, n for Nat; :: PRELIMINARIES - MANY SORTED FUNCTIONS definition let I be non empty set, A,B be ManySortedSet of I, F be ManySortedFunction of A,B, i be Element of I; redefine func F.i -> Function of A.i,B.i; end; definition let S be non empty ManySortedSign; let U1,U2 be MSAlgebra over S; mode ManySortedFunction of U1,U2 is ManySortedFunction of the Sorts of U1, the Sorts of U2; end; definition let I be set,A be ManySortedSet of I; func id A -> ManySortedFunction of A,A means :: MSUALG_3:def 1 for i be set st i in I holds it.i = id (A.i); end; definition let IT be Function; attr IT is "1-1" means :: MSUALG_3:def 2 for i be set, f be Function st i in dom IT & IT.i = f holds f is one-to-one; end; registration let I be set; cluster "1-1" for ManySortedFunction of I; end; theorem :: MSUALG_3:1 for I be set,F be ManySortedFunction of I holds F is "1-1" iff for i be set st i in I holds F.i is one-to-one; definition let I be set, A,B be ManySortedSet of I; let IT be ManySortedFunction of A,B; attr IT is "onto" means :: MSUALG_3:def 3 for i be set st i in I holds rng(IT.i) = B.i; end; theorem :: MSUALG_3:2 for I be set, A,B,C be ManySortedSet of I, F be ManySortedFunction of A,B, G be ManySortedFunction of B,C holds dom (G ** F) = I & for i be set st i in I holds (G**F).i = (G.i)*(F.i); definition let I be set, A be ManySortedSet of I, B,C be non-empty ManySortedSet of I, F be ManySortedFunction of A,B, G be ManySortedFunction of B,C; redefine func G**F -> ManySortedFunction of A,C; end; theorem :: MSUALG_3:3 for I be set,A,B be ManySortedSet of I, F be ManySortedFunction of A,B holds F**(id A) = F; theorem :: MSUALG_3:4 for I be set, A,B be ManySortedSet of I for F be ManySortedFunction of A, B holds (id B)**F = F; definition let I be set, A,B be ManySortedSet of I, F be ManySortedFunction of A,B; assume that F is "1-1" and F is "onto"; func F"" -> ManySortedFunction of B,A means :: MSUALG_3:def 4 for i be set st i in I holds it.i = (F.i)"; end; theorem :: MSUALG_3:5 for I be set,A,B be non-empty ManySortedSet of I, H be ManySortedFunction of A,B, H1 be ManySortedFunction of B,A st H is "1-1" "onto" & H1 = H"" holds H**H1 = id B & H1**H = id A; registration let S; let U1 be non-empty MSAlgebra over S; let o; cluster Args(o,U1) -> functional; end; begin :: Homomorphisms of Many Sorted Algebras theorem :: MSUALG_3:6 for U1 being MSAlgebra over S for x be Function st x in Args(o,U1) holds dom x = dom the_arity_of o & for y be set st y in dom ((the Sorts of U1) * (the_arity_of o)) holds x.y in ((the Sorts of U1) * (the_arity_of o)).y; definition let S; let U1,U2 be MSAlgebra over S; let o; let F be ManySortedFunction of U1,U2; let x be Element of Args(o,U1); assume that Args(o,U1) <> {} and Args(o,U2) <> {}; func F # x -> Element of Args(o,U2) equals :: MSUALG_3:def 5 (Frege(F*the_arity_of o)). x; end; definition let S; let U1,U2 be non-empty MSAlgebra over S; let o; let F be ManySortedFunction of U1,U2; let x be Element of Args(o,U1); redefine func F # x means :: MSUALG_3:def 6 for n st n in dom x holds it.n = (F.((the_arity_of o)/.n)).(x.n); end; theorem :: MSUALG_3:7 for S,o for U1 being MSAlgebra over S st Args(o,U1) <> {} for x be Element of Args(o,U1) holds x = ((id (the Sorts of U1))#x); theorem :: MSUALG_3:8 for U1,U2,U3 being non-empty MSAlgebra over S for H1 be ManySortedFunction of U1,U2, H2 be ManySortedFunction of U2,U3, x be Element of Args(o,U1) holds (H2**H1)#x = H2#(H1#x); definition let S; let U1,U2 be MSAlgebra over S; let F be ManySortedFunction of U1,U2; pred F is_homomorphism U1,U2 means :: MSUALG_3:def 7 for o be OperSymbol of S st Args(o,U1) <> {} for x be Element of Args(o,U1) holds (F.(the_result_sort_of o)).(Den (o,U1).x) = Den(o,U2).(F#x); end; theorem :: MSUALG_3:9 for U1 being MSAlgebra over S holds id (the Sorts of U1) is_homomorphism U1,U1; theorem :: MSUALG_3:10 for U1,U2,U3 being non-empty MSAlgebra over S for H1 be ManySortedFunction of U1,U2, H2 be ManySortedFunction of U2,U3 st H1 is_homomorphism U1,U2 & H2 is_homomorphism U2,U3 holds H2 ** H1 is_homomorphism U1,U3; definition let S; let U1,U2 be MSAlgebra over S; let F be ManySortedFunction of U1,U2; pred F is_epimorphism U1,U2 means :: MSUALG_3:def 8 F is_homomorphism U1,U2 & F is "onto"; end; theorem :: MSUALG_3:11 for U1,U2,U3 being non-empty MSAlgebra over S for F be ManySortedFunction of U1,U2, G be ManySortedFunction of U2,U3 st F is_epimorphism U1,U2 & G is_epimorphism U2,U3 holds G**F is_epimorphism U1,U3; definition let S; let U1,U2 be MSAlgebra over S; let F be ManySortedFunction of U1,U2; pred F is_monomorphism U1,U2 means :: MSUALG_3:def 9 F is_homomorphism U1,U2 & F is "1-1"; end; theorem :: MSUALG_3:12 for U1,U2,U3 being non-empty MSAlgebra over S for F be ManySortedFunction of U1,U2, G be ManySortedFunction of U2,U3 st F is_monomorphism U1,U2 & G is_monomorphism U2,U3 holds G**F is_monomorphism U1, U3; definition let S; let U1,U2 be MSAlgebra over S; let F be ManySortedFunction of U1,U2; pred F is_isomorphism U1,U2 means :: MSUALG_3:def 10 F is_epimorphism U1,U2 & F is_monomorphism U1,U2; end; theorem :: MSUALG_3:13 for F be ManySortedFunction of U1,U2 holds F is_isomorphism U1, U2 iff F is_homomorphism U1,U2 & F is "onto" & F is "1-1"; theorem :: MSUALG_3:14 for U1,U2 being non-empty MSAlgebra over S for H be ManySortedFunction of U1,U2, H1 be ManySortedFunction of U2,U1 st H is_isomorphism U1,U2 & H1 = H"" holds H1 is_isomorphism U2,U1; theorem :: MSUALG_3:15 for U1,U2,U3 being non-empty MSAlgebra over S for H be ManySortedFunction of U1,U2, H1 be ManySortedFunction of U2,U3 st H is_isomorphism U1,U2 & H1 is_isomorphism U2,U3 holds H1 ** H is_isomorphism U1, U3; definition let S; let U1,U2 be MSAlgebra over S; pred U1,U2 are_isomorphic means :: MSUALG_3:def 11 ex F be ManySortedFunction of U1,U2 st F is_isomorphism U1,U2; end; theorem :: MSUALG_3:16 for U1 being MSAlgebra over S holds id the Sorts of U1 is_isomorphism U1,U1 & U1,U1 are_isomorphic; definition let S; let U1, U2 be MSAlgebra over S; redefine pred U1, U2 are_isomorphic; reflexivity; end; theorem :: MSUALG_3:17 for U1,U2 being non-empty MSAlgebra over S holds U1,U2 are_isomorphic implies U2,U1 are_isomorphic; theorem :: MSUALG_3:18 for U1,U2,U3 being non-empty MSAlgebra over S holds U1,U2 are_isomorphic & U2,U3 are_isomorphic implies U1,U3 are_isomorphic; definition let S; let U1,U2 be non-empty MSAlgebra over S; let F be ManySortedFunction of U1,U2; assume F is_homomorphism U1,U2; func Image F -> strict non-empty MSSubAlgebra of U2 means :: MSUALG_3:def 12 the Sorts of it = F.:.:(the Sorts of U1); end; theorem :: MSUALG_3:19 for U1 being non-empty MSAlgebra over S, U2 being non-empty MSAlgebra over S, F be ManySortedFunction of U1,U2 st F is_homomorphism U1,U2 holds F is_epimorphism U1,U2 iff Image F = the MSAlgebra of U2; theorem :: MSUALG_3:20 for U1,U2 being non-empty MSAlgebra over S for F be ManySortedFunction of U1,U2, G be ManySortedFunction of U1,Image F st F = G & F is_homomorphism U1,U2 holds G is_epimorphism U1,Image F; theorem :: MSUALG_3:21 for U1,U2 being non-empty MSAlgebra over S for F be ManySortedFunction of U1,U2 st F is_homomorphism U1,U2 ex G be ManySortedFunction of U1,Image F st F = G & G is_epimorphism U1,Image F; theorem :: MSUALG_3:22 for U1 being non-empty MSAlgebra over S for U2 be non-empty MSSubAlgebra of U1, G be ManySortedFunction of U2,U1 st G = id (the Sorts of U2 ) holds G is_monomorphism U2,U1; theorem :: MSUALG_3:23 for U1,U2 being non-empty MSAlgebra over S for F be ManySortedFunction of U1,U2 st F is_homomorphism U1,U2 ex F1 be ManySortedFunction of U1,Image F, F2 be ManySortedFunction of Image F,U2 st F1 is_epimorphism U1,Image F & F2 is_monomorphism Image F,U2 & F = F2**F1; theorem :: MSUALG_3:24 for S for U1,U2 being MSAlgebra over S for o for F being ManySortedFunction of U1,U2 for x being Element of Args(o,U1), f,u being Function st x = f & x in Args(o,U1) & u in Args(o,U2) holds u = F#x iff for n st n in dom f holds u.n = (F.((the_arity_of o)/.n)).(f.n);