Article INSTALG1, MML version 4.99.1005

:: INSTALG1: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 ManySortedSet of the carrier of b1
for b4 being set holds
      b4 is ArgumentSeq of Sym(b2,b3)
   iff
      b4 is Element of Args(b2,FreeMSA b3);

:: INSTALG1:condreg 1
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be Element of the OperSymbols of a1;
  cluster -> DTree-yielding (Element of Args(a3,FreeMSA a2));
end;

:: INSTALG1:th 3
theorem
for b1 being non empty non void ManySortedSign
for b2, b3 being MSAlgebra over b1
   st the Sorts of b2 is_transformable_to the Sorts of b3
for b4 being Element of the OperSymbols of b1
      st Args(b4,b2) <> {}
   holds Args(b4,b3) <> {};

:: INSTALG1:th 4
theorem
for b1 being non empty non void ManySortedSign
for b2 being Element of the OperSymbols of b1
for b3 being non-empty ManySortedSet of the carrier of b1
for b4 being Element of Args(b2,FreeMSA b3) holds
   (Den(b2,FreeMSA b3)) . b4 = [b2,the carrier of b1] -tree b4;

:: INSTALG1:funcreg 1
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty MSAlgebra over a1;
  cluster MSAlgebra(#the Sorts of a2,the Charact of a2#) -> strict non-empty;
end;

:: INSTALG1:th 5
theorem
for b1 being non empty non void ManySortedSign
for b2, b3 being MSAlgebra over b1
   st MSAlgebra(#the Sorts of b2,the Charact of b2#) = MSAlgebra(#the Sorts of b3,the Charact of b3#)
for b4 being Element of the OperSymbols of b1 holds
   Den(b4,b2) = Den(b4,b3);

:: INSTALG1:th 6
theorem
for b1 being non empty non void ManySortedSign
for b2, b3, b4, b5 being MSAlgebra over b1
   st MSAlgebra(#the Sorts of b2,the Charact of b2#) = MSAlgebra(#the Sorts of b4,the Charact of b4#) &
      MSAlgebra(#the Sorts of b3,the Charact of b3#) = MSAlgebra(#the Sorts of b5,the Charact of b5#)
for b6 being ManySortedFunction of the Sorts of b2,the Sorts of b3
for b7 being ManySortedFunction of the Sorts of b4,the Sorts of b5
   st b6 = b7
for b8 being Element of the OperSymbols of b1
   st Args(b8,b2) <> {} & Args(b8,b3) <> {}
for b9 being Element of Args(b8,b2)
for b10 being Element of Args(b8,b4)
      st b9 = b10
   holds b6 # b9 = b7 # b10;

:: INSTALG1:th 7
theorem
for b1 being non empty non void ManySortedSign
for b2, b3, b4, b5 being MSAlgebra over b1
   st MSAlgebra(#the Sorts of b2,the Charact of b2#) = MSAlgebra(#the Sorts of b4,the Charact of b4#) &
      MSAlgebra(#the Sorts of b3,the Charact of b3#) = MSAlgebra(#the Sorts of b5,the Charact of b5#) &
      the Sorts of b2 is_transformable_to the Sorts of b3
for b6 being ManySortedFunction of the Sorts of b2,the Sorts of b3
      st b6 is_homomorphism b2,b3
   holds ex b7 being ManySortedFunction of the Sorts of b4,the Sorts of b5 st
      b7 = b6 & b7 is_homomorphism b4,b5;

:: INSTALG1:attrnot 1 => INSTALG1:attr 1
definition
  let a1 be ManySortedSign;
  attr a1 is feasible means
    (the carrier of a1 = {}) implies the OperSymbols of a1 = {};
end;

:: INSTALG1:dfs 1
definiens
  let a1 be ManySortedSign;
To prove
     a1 is feasible
it is sufficient to prove
  thus (the carrier of a1 = {}) implies the OperSymbols of a1 = {};

:: INSTALG1:def 1
theorem
for b1 being ManySortedSign holds
      b1 is feasible
   iff
      (the carrier of b1 = {} implies the OperSymbols of b1 = {});

:: INSTALG1:th 8
theorem
for b1 being ManySortedSign holds
      b1 is feasible
   iff
      proj1 the ResultSort of b1 = the OperSymbols of b1;

:: INSTALG1:condreg 2
registration
  cluster non empty -> feasible (ManySortedSign);
end;

:: INSTALG1:condreg 3
registration
  cluster void -> feasible (ManySortedSign);
end;

:: INSTALG1:condreg 4
registration
  cluster empty feasible -> void (ManySortedSign);
end;

:: INSTALG1:condreg 5
registration
  cluster non void feasible -> non empty (ManySortedSign);
end;

:: INSTALG1:exreg 1
registration
  cluster non empty non void ManySortedSign;
end;

:: INSTALG1:th 9
theorem
for b1 being feasible ManySortedSign holds
   id the carrier of b1,id the OperSymbols of b1 form_morphism_between b1,b1;

:: INSTALG1:th 10
theorem
for b1, b2 being ManySortedSign
for b3, b4 being Relation-like Function-like set
      st b3,b4 form_morphism_between b1,b2
   holds b3 is Function-like quasi_total Relation of the carrier of b1,the carrier of b2 &
    b4 is Function-like quasi_total Relation of the OperSymbols of b1,the OperSymbols of b2;

:: INSTALG1:modenot 1 => INSTALG1:mode 1
definition
  let a1 be feasible ManySortedSign;
  mode Subsignature of A1 -> ManySortedSign means
    id the carrier of it,id the OperSymbols of it form_morphism_between it,a1;
end;

:: INSTALG1:dfs 2
definiens
  let a1 be feasible ManySortedSign;
  let a2 be ManySortedSign;
To prove
     a2 is Subsignature of a1
it is sufficient to prove
  thus id the carrier of a2,id the OperSymbols of a2 form_morphism_between a2,a1;

:: INSTALG1:def 2
theorem
for b1 being feasible ManySortedSign
for b2 being ManySortedSign holds
      b2 is Subsignature of b1
   iff
      id the carrier of b2,id the OperSymbols of b2 form_morphism_between b2,b1;

:: INSTALG1:th 11
theorem
for b1 being feasible ManySortedSign
for b2 being Subsignature of b1 holds
   the carrier of b2 c= the carrier of b1 & the OperSymbols of b2 c= the OperSymbols of b1;

:: INSTALG1:condreg 6
registration
  let a1 be feasible ManySortedSign;
  cluster -> feasible (Subsignature of a1);
end;

:: INSTALG1:th 12
theorem
for b1 being feasible ManySortedSign
for b2 being Subsignature of b1 holds
   the ResultSort of b2 c= the ResultSort of b1 & the Arity of b2 c= the Arity of b1;

:: INSTALG1:th 13
theorem
for b1 being feasible ManySortedSign
for b2 being Subsignature of b1 holds
   the Arity of b2 = (the Arity of b1) | the OperSymbols of b2 &
    the ResultSort of b2 = (the ResultSort of b1) | the OperSymbols of b2;

:: INSTALG1:th 14
theorem
for b1, b2 being feasible ManySortedSign
      st the carrier of b2 c= the carrier of b1 & the Arity of b2 c= the Arity of b1 & the ResultSort of b2 c= the ResultSort of b1
   holds b2 is Subsignature of b1;

:: INSTALG1:th 15
theorem
for b1, b2 being feasible ManySortedSign
      st the carrier of b2 c= the carrier of b1 &
         the Arity of b2 = (the Arity of b1) | the OperSymbols of b2 &
         the ResultSort of b2 = (the ResultSort of b1) | the OperSymbols of b2
   holds b2 is Subsignature of b1;

:: INSTALG1:th 16
theorem
for b1 being feasible ManySortedSign holds
   b1 is Subsignature of b1;

:: INSTALG1:th 17
theorem
for b1 being feasible ManySortedSign
for b2 being Subsignature of b1
for b3 being Subsignature of b2 holds
   b3 is Subsignature of b1;

:: INSTALG1:th 18
theorem
for b1 being feasible ManySortedSign
for b2 being Subsignature of b1
      st b1 is Subsignature of b2
   holds ManySortedSign(#the carrier of b1,the OperSymbols of b1,the Arity of b1,the ResultSort of b1#) = ManySortedSign(#the carrier of b2,the OperSymbols of b2,the Arity of b2,the ResultSort of b2#);

:: INSTALG1:exreg 2
registration
  let a1 be non empty ManySortedSign;
  cluster non empty feasible Subsignature of a1;
end;

:: INSTALG1:exreg 3
registration
  let a1 be non void feasible ManySortedSign;
  cluster non void feasible Subsignature of a1;
end;

:: INSTALG1:th 19
theorem
for b1 being feasible ManySortedSign
for b2 being Subsignature of b1
for b3 being ManySortedSign
for b4, b5 being Relation-like Function-like set
      st b4,b5 form_morphism_between b1,b3
   holds b4 | the carrier of b2,b5 | the OperSymbols of b2 form_morphism_between b2,b3;

:: INSTALG1:th 20
theorem
for b1 being ManySortedSign
for b2 being feasible ManySortedSign
for b3 being Subsignature of b2
for b4, b5 being Relation-like Function-like set
      st b4,b5 form_morphism_between b1,b3
   holds b4,b5 form_morphism_between b1,b2;

:: INSTALG1:th 21
theorem
for b1 being ManySortedSign
for b2 being feasible ManySortedSign
for b3 being Subsignature of b2
for b4, b5 being Relation-like Function-like set
      st b4,b5 form_morphism_between b1,b2 & proj2 b4 c= the carrier of b3 & proj2 b5 c= the OperSymbols of b3
   holds b4,b5 form_morphism_between b1,b3;

:: INSTALG1:funcnot 1 => INSTALG1:func 1
definition
  let a1, a2 be non empty ManySortedSign;
  let a3 be MSAlgebra over a2;
  let a4, a5 be Relation-like Function-like set;
  assume a4,a5 form_morphism_between a1,a2;
  func A3 |(A1,A4,A5) -> strict MSAlgebra over a1 means
    the Sorts of it = a4 * the Sorts of a3 & the Charact of it = a5 * the Charact of a3;
end;

:: INSTALG1:def 3
theorem
for b1, b2 being non empty ManySortedSign
for b3 being MSAlgebra over b2
for b4, b5 being Relation-like Function-like set
   st b4,b5 form_morphism_between b1,b2
for b6 being strict MSAlgebra over b1 holds
      b6 = b3 |(b1,b4,b5)
   iff
      the Sorts of b6 = b4 * the Sorts of b3 & the Charact of b6 = b5 * the Charact of b3;

:: INSTALG1:funcnot 2 => INSTALG1:func 2
definition
  let a1, a2 be non empty ManySortedSign;
  let a3 be MSAlgebra over a1;
  func A3 | A2 -> strict MSAlgebra over a2 equals
    a3 |(a2,id the carrier of a2,id the OperSymbols of a2);
end;

:: INSTALG1:def 4
theorem
for b1, b2 being non empty ManySortedSign
for b3 being MSAlgebra over b1 holds
   b3 | b2 = b3 |(b2,id the carrier of b2,id the OperSymbols of b2);

:: INSTALG1:th 22
theorem
for b1, b2 being non empty ManySortedSign
for b3, b4 being MSAlgebra over b2
   st MSAlgebra(#the Sorts of b3,the Charact of b3#) = MSAlgebra(#the Sorts of b4,the Charact of b4#)
for b5, b6 being Relation-like Function-like set
      st b5,b6 form_morphism_between b1,b2
   holds b3 |(b1,b5,b6) = b4 |(b1,b5,b6);

:: INSTALG1:th 23
theorem
for b1, b2 being non empty ManySortedSign
for b3 being non-empty MSAlgebra over b2
for b4, b5 being Relation-like Function-like set
      st b4,b5 form_morphism_between b1,b2
   holds b3 |(b1,b4,b5) is non-empty(b1);

:: INSTALG1:funcreg 2
registration
  let a1 be non empty ManySortedSign;
  let a2 be non empty Subsignature of a1;
  let a3 be non-empty MSAlgebra over a1;
  cluster a3 | a2 -> strict non-empty;
end;

:: INSTALG1:th 24
theorem
for b1, b2 being non empty non void ManySortedSign
for b3, b4 being Relation-like Function-like set
   st b3,b4 form_morphism_between b1,b2
for b5 being MSAlgebra over b2
for b6 being Element of the OperSymbols of b1
for b7 being Element of the OperSymbols of b2
      st b7 = b4 . b6
   holds Den(b6,b5 |(b1,b3,b4)) = Den(b7,b5);

:: INSTALG1:th 25
theorem
for b1, b2 being non empty non void ManySortedSign
for b3, b4 being Relation-like Function-like set
   st b3,b4 form_morphism_between b1,b2
for b5 being MSAlgebra over b2
for b6 being Element of the OperSymbols of b1
for b7 being Element of the OperSymbols of b2
      st b7 = b4 . b6
   holds Args(b7,b5) = Args(b6,b5 |(b1,b3,b4)) & Result(b6,b5 |(b1,b3,b4)) = Result(b7,b5);

:: INSTALG1:th 26
theorem
for b1 being non empty ManySortedSign
for b2 being MSAlgebra over b1 holds
   b2 |(b1,id the carrier of b1,id the OperSymbols of b1) = MSAlgebra(#the Sorts of b2,the Charact of b2#);

:: INSTALG1:th 27
theorem
for b1 being non empty ManySortedSign
for b2 being MSAlgebra over b1 holds
   b2 | b1 = MSAlgebra(#the Sorts of b2,the Charact of b2#);

:: INSTALG1:th 28
theorem
for b1, b2, b3 being non empty ManySortedSign
for b4, b5 being Relation-like Function-like set
   st b4,b5 form_morphism_between b1,b2
for b6, b7 being Relation-like Function-like set
   st b6,b7 form_morphism_between b2,b3
for b8 being MSAlgebra over b3 holds
   b8 |(b1,b4 * b6,b5 * b7) = (b8 |(b2,b6,b7)) |(b1,b4,b5);

:: INSTALG1:th 29
theorem
for b1 being non empty feasible ManySortedSign
for b2 being non empty Subsignature of b1
for b3 being non empty Subsignature of b2
for b4 being MSAlgebra over b1 holds
   b4 | b3 = (b4 | b2) | b3;

:: INSTALG1:th 30
theorem
for b1, b2 being non empty ManySortedSign
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
for b4 being Relation-like Function-like set
   st b3,b4 form_morphism_between b1,b2
for b5, b6 being MSAlgebra over b2
for b7 being ManySortedFunction of the Sorts of b5,the Sorts of b6 holds
   b7 * b3 is ManySortedFunction of the Sorts of b5 |(b1,b3,b4),the Sorts of b6 |(b1,b3,b4);

:: INSTALG1:th 31
theorem
for b1 being non empty ManySortedSign
for b2 being non empty Subsignature of b1
for b3, b4 being MSAlgebra over b1
for b5 being ManySortedFunction of the Sorts of b3,the Sorts of b4 holds
   b5 | the carrier of b2 is ManySortedFunction of the Sorts of b3 | b2,the Sorts of b4 | b2;

:: INSTALG1:th 32
theorem
for b1, b2 being non empty ManySortedSign
for b3, b4 being Relation-like Function-like set
   st b3,b4 form_morphism_between b1,b2
for b5 being MSAlgebra over b2 holds
   b3 * id the Sorts of b5 = id the Sorts of b5 |(b1,b3,b4);

:: INSTALG1:th 33
theorem
for b1 being non empty ManySortedSign
for b2 being non empty Subsignature of b1
for b3 being MSAlgebra over b1 holds
   (id the Sorts of b3) | the carrier of b2 = id the Sorts of b3 | b2;

:: INSTALG1:th 34
theorem
for b1, b2 being non empty non void ManySortedSign
for b3, b4 being Relation-like Function-like set
   st b3,b4 form_morphism_between b1,b2
for b5, b6 being MSAlgebra over b2
for b7 being ManySortedFunction of the Sorts of b5,the Sorts of b6
for b8 being ManySortedFunction of the Sorts of b5 |(b1,b3,b4),the Sorts of b6 |(b1,b3,b4)
   st b8 = b3 * b7
for b9 being Element of the OperSymbols of b1
for b10 being Element of the OperSymbols of b2
   st b10 = b4 . b9 & Args(b10,b5) <> {} & Args(b10,b6) <> {}
for b11 being Element of Args(b10,b5)
for b12 being Element of Args(b9,b5 |(b1,b3,b4))
      st b11 = b12
   holds b8 # b12 = b7 # b11;

:: INSTALG1:th 35
theorem
for b1, b2 being non empty non void ManySortedSign
for b3, b4 being MSAlgebra over b1
   st the Sorts of b3 is_transformable_to the Sorts of b4
for b5 being ManySortedFunction of the Sorts of b3,the Sorts of b4
   st b5 is_homomorphism b3,b4
for b6 being Function-like quasi_total Relation of the carrier of b2,the carrier of b1
for b7 being Relation-like Function-like set
      st b6,b7 form_morphism_between b2,b1
   holds ex b8 being ManySortedFunction of the Sorts of b3 |(b2,b6,b7),the Sorts of b4 |(b2,b6,b7) st
      b8 = b5 * b6 & b8 is_homomorphism b3 |(b2,b6,b7),b4 |(b2,b6,b7);

:: INSTALG1:th 36
theorem
for b1 being non void feasible ManySortedSign
for b2 being non void Subsignature of b1
for b3, b4 being MSAlgebra over b1
   st the Sorts of b3 is_transformable_to the Sorts of b4
for b5 being ManySortedFunction of the Sorts of b3,the Sorts of b4
      st b5 is_homomorphism b3,b4
   holds ex b6 being ManySortedFunction of the Sorts of b3 | b2,the Sorts of b4 | b2 st
      b6 = b5 | the carrier of b2 & b6 is_homomorphism b3 | b2,b4 | b2;

:: INSTALG1:th 37
theorem
for b1, b2 being non empty non void ManySortedSign
for b3 being non-empty MSAlgebra over b1
for b4 being Function-like quasi_total Relation of the carrier of b2,the carrier of b1
for b5 being Relation-like Function-like set
   st b4,b5 form_morphism_between b2,b1
for b6 being non-empty MSAlgebra over b2
   st b6 = b3 |(b2,b4,b5)
for b7, b8 being Element of the carrier of b2
for b9 being Relation-like Function-like set
      st b9 is_e.translation_of b6,b7,b8
   holds b9 is_e.translation_of b3,b4 . b7,b4 . b8;

:: INSTALG1:th 38
theorem
for b1, b2 being non empty non void ManySortedSign
for b3 being Function-like quasi_total Relation of the carrier of b2,the carrier of b1
for b4 being Relation-like Function-like set
   st b3,b4 form_morphism_between b2,b1
for b5, b6 being Element of the carrier of b2
      st TranslationRel b2 reduces b5,b6
   holds TranslationRel b1 reduces b3 . b5,b3 . b6;

:: INSTALG1:th 39
theorem
for b1, b2 being non empty non void ManySortedSign
for b3 being non-empty MSAlgebra over b1
for b4 being Function-like quasi_total Relation of the carrier of b2,the carrier of b1
for b5 being Relation-like Function-like set
   st b4,b5 form_morphism_between b2,b1
for b6 being non-empty MSAlgebra over b2
   st b6 = b3 |(b2,b4,b5)
for b7, b8 being Element of the carrier of b2
   st TranslationRel b2 reduces b7,b8
for b9 being Translation of b6,b7,b8 holds
   b9 is Translation of b3,b4 . b7,b4 . b8;

:: INSTALG1:sch 1
scheme INSTALG1:sch 1
{F1 -> non empty non void ManySortedSign,
  F2 -> non-empty MSAlgebra over F1(),
  F3 -> non-empty ManySortedSet of the carrier of F1(),
  F4 -> set}:
ex b1 being ManySortedFunction of the Sorts of FreeMSA F3(),the Sorts of F2() st
   b1 is_homomorphism FreeMSA F3(),F2() &
    (for b2 being Element of the carrier of F1()
    for b3 being Element of F3() . b2 holds
       (b1 . b2) . root-tree [b3,b2] = F4(b3, b2))
provided
   for b1 being Element of the carrier of F1()
   for b2 being Element of F3() . b1 holds
      F4(b2, b1) in (the Sorts of F2()) . b1;


:: INSTALG1:th 40
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
for b4 being ManySortedSubset of b2
for b5 being ManySortedFunction of b2,b3
for b6 being set
   st b6 in b1
for b7, b8 being Relation-like Function-like set
   st b7 = b5 . b6 & b8 = (b5 || b4) . b6
for b9 being set
      st b9 in b4 . b6
   holds b8 . b9 = b7 . b9;

:: INSTALG1:funcreg 3
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  cluster FreeGen a2 -> non-empty;
end;

:: INSTALG1:funcnot 3 => INSTALG1:func 3
definition
  let a1, a2 be non empty non void ManySortedSign;
  let a3 be non-empty ManySortedSet of the carrier of a2;
  let a4 be Function-like quasi_total Relation of the carrier of a1,the carrier of a2;
  let a5 be Relation-like Function-like set;
  assume a4,a5 form_morphism_between a1,a2;
  func hom(A4,A5,A3,A1,A2) -> ManySortedFunction of the Sorts of FreeMSA (a3 * a4),the Sorts of (FreeMSA a3) |(a1,a4,a5) means
    it is_homomorphism FreeMSA (a3 * a4),(FreeMSA a3) |(a1,a4,a5) &
     (for b1 being Element of the carrier of a1
     for b2 being Element of (a3 * a4) . b1 holds
        (it . b1) . root-tree [b2,b1] = root-tree [b2,a4 . b1]);
end;

:: INSTALG1:def 5
theorem
for b1, b2 being non empty non void ManySortedSign
for b3 being non-empty ManySortedSet of the carrier of b2
for b4 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
for b5 being Relation-like Function-like set
   st b4,b5 form_morphism_between b1,b2
for b6 being ManySortedFunction of the Sorts of FreeMSA (b3 * b4),the Sorts of (FreeMSA b3) |(b1,b4,b5) holds
      b6 = hom(b4,b5,b3,b1,b2)
   iff
      b6 is_homomorphism FreeMSA (b3 * b4),(FreeMSA b3) |(b1,b4,b5) &
       (for b7 being Element of the carrier of b1
       for b8 being Element of (b3 * b4) . b7 holds
          (b6 . b7) . root-tree [b8,b7] = root-tree [b8,b4 . b7]);

:: INSTALG1:th 41
theorem
for b1, b2 being non empty non void ManySortedSign
for b3 being non-empty ManySortedSet of the carrier of b2
for b4 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
for b5 being Relation-like Function-like set
   st b4,b5 form_morphism_between b1,b2
for b6 being Element of the OperSymbols of b1
for b7 being Element of Args(b6,FreeMSA (b3 * b4))
for b8 being Relation-like Function-like FinSequence-like set
      st b8 = (hom(b4,b5,b3,b1,b2)) # b7
   holds ((hom(b4,b5,b3,b1,b2)) . the_result_sort_of b6) . ([b6,the carrier of b1] -tree b7) = [b5 . b6,the carrier of b2] -tree b8;

:: INSTALG1:th 42
theorem
for b1, b2 being non empty non void ManySortedSign
for b3 being non-empty ManySortedSet of the carrier of b2
for b4 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
for b5 being Relation-like Function-like set
   st b4,b5 form_morphism_between b1,b2
for b6 being Element of b1 -Terms (b3 * b4) holds
      ((hom(b4,b5,b3,b1,b2)) . the_sort_of b6) . b6 is CompoundTerm of b2,b3
   iff
      b6 is CompoundTerm of b1,b3 * b4;

:: INSTALG1:th 43
theorem
for b1, b2 being non empty non void ManySortedSign
for b3 being non-empty ManySortedSet of the carrier of b2
for b4 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
for b5 being Relation-like Function-like one-to-one set
      st b4,b5 form_morphism_between b1,b2
   holds hom(b4,b5,b3,b1,b2) is_monomorphism FreeMSA (b3 * b4),(FreeMSA b3) |(b1,b4,b5);

:: INSTALG1:th 44
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
   hom(id the carrier of b1,id the OperSymbols of b1,b2,b1,b1) = id the Sorts of FreeMSA b2;

:: INSTALG1:th 45
theorem
for b1, b2, b3 being non empty non void ManySortedSign
for b4 being non-empty ManySortedSet of the carrier of b3
for b5 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
for b6 being Relation-like Function-like set
   st b5,b6 form_morphism_between b1,b2
for b7 being Function-like quasi_total Relation of the carrier of b2,the carrier of b3
for b8 being Relation-like Function-like set
      st b7,b8 form_morphism_between b2,b3
   holds hom(b7 * b5,b6 * b8,b4,b1,b3) = ((hom(b7,b8,b4,b2,b3)) * b5) ** hom(b5,b6,b4 * b7,b1,b2);