Article OSALG_3, MML version 4.99.1005

:: OSALG_3:attrnot 1 => OSALG_3:attr 1
definition
  let a1 be non empty reflexive transitive antisymmetric RelStr;
  let a2 be Function-yielding ManySortedSet of the carrier of a1;
  attr a2 is order-sorted means
    for b1, b2 being Element of the carrier of a1
       st b1 <= b2
    for b3 being set
          st b3 in proj1 (a2 . b1)
       holds b3 in proj1 (a2 . b2) &
        (a2 . b1) . b3 = (a2 . b2) . b3;
end;

:: OSALG_3:dfs 1
definiens
  let a1 be non empty reflexive transitive antisymmetric RelStr;
  let a2 be Function-yielding ManySortedSet of the carrier of a1;
To prove
     a2 is order-sorted
it is sufficient to prove
  thus for b1, b2 being Element of the carrier of a1
       st b1 <= b2
    for b3 being set
          st b3 in proj1 (a2 . b1)
       holds b3 in proj1 (a2 . b2) &
        (a2 . b1) . b3 = (a2 . b2) . b3;

:: OSALG_3:def 1
theorem
for b1 being non empty reflexive transitive antisymmetric RelStr
for b2 being Function-yielding ManySortedSet of the carrier of b1 holds
      b2 is order-sorted(b1)
   iff
      for b3, b4 being Element of the carrier of b1
         st b3 <= b4
      for b5 being set
            st b5 in proj1 (b2 . b3)
         holds b5 in proj1 (b2 . b4) &
          (b2 . b3) . b5 = (b2 . b4) . b5;

:: OSALG_3:th 2
theorem
for b1 being non empty reflexive transitive antisymmetric RelStr
for b2 being Function-yielding ManySortedSet of the carrier of b1
   st b2 is order-sorted(b1)
for b3, b4 being Element of the carrier of b1
      st b3 <= b4
   holds proj1 (b2 . b3) c= proj1 (b2 . b4) & b2 . b3 c= b2 . b4;

:: OSALG_3:th 3
theorem
for b1 being non empty reflexive transitive antisymmetric RelStr
for b2 being order-sorted ManySortedSet of the carrier of b1
for b3 being non-empty order-sorted ManySortedSet of the carrier of b1
for b4 being ManySortedFunction of b2,b3 holds
      b4 is order-sorted(b1)
   iff
      for b5, b6 being Element of the carrier of b1
         st b5 <= b6
      for b7 being set
            st b7 in b2 . b5
         holds (b4 . b5) . b7 = (b4 . b6) . b7;

:: OSALG_3:th 4
theorem
for b1 being non empty reflexive transitive antisymmetric RelStr
for b2 being Function-yielding ManySortedSet of the carrier of b1
   st b2 is order-sorted(b1)
for b3, b4 being Element of (the carrier of b1) *
      st b3 <= b4
   holds b2 # . b3 c= b2 # . b4;

:: OSALG_3:th 5
theorem
for b1 being non empty reflexive transitive antisymmetric RelStr
for b2 being order-sorted ManySortedSet of the carrier of b1 holds
   id b2 is order-sorted(b1);

:: OSALG_3:funcreg 1
registration
  let a1 be non empty reflexive transitive antisymmetric RelStr;
  let a2 be order-sorted ManySortedSet of the carrier of a1;
  cluster id a2 -> order-sorted;
end;

:: OSALG_3:th 6
theorem
for b1 being non empty reflexive transitive antisymmetric RelStr
for b2 being order-sorted ManySortedSet of the carrier of b1
for b3, b4 being non-empty order-sorted ManySortedSet of the carrier of b1
for b5 being ManySortedFunction of b2,b3
for b6 being ManySortedFunction of b3,b4
      st b5 is order-sorted(b1) & b6 is order-sorted(b1)
   holds b6 ** b5 is order-sorted(b1);

:: OSALG_3:th 7
theorem
for b1 being non empty reflexive transitive antisymmetric RelStr
for b2, b3 being order-sorted ManySortedSet of the carrier of b1
for b4 being ManySortedFunction of b2,b3
      st b4 is "1-1" & b4 is "onto"(the carrier of b1, b2, b3) & b4 is order-sorted(b1)
   holds b4 "" is order-sorted(b1);

:: OSALG_3:th 8
theorem
for b1 being non empty reflexive transitive antisymmetric RelStr
for b2 being order-sorted ManySortedSet of the carrier of b1
for b3 being Function-yielding ManySortedSet of the carrier of b1
      st b3 is order-sorted(b1)
   holds b3 .:.: b2 is order-sorted ManySortedSet of the carrier of b1;

:: OSALG_3:prednot 1 => OSALG_3:pred 1
definition
  let a1 be non empty non void order-sorted discernable OverloadedRSSign;
  let a2, a3 be order-sorted MSAlgebra over a1;
  pred A2,A3 are_os_isomorphic means
    ex b1 being ManySortedFunction of the Sorts of a2,the Sorts of a3 st
       b1 is_isomorphism a2,a3 & b1 is order-sorted(a1);
end;

:: OSALG_3:dfs 2
definiens
  let a1 be non empty non void order-sorted discernable OverloadedRSSign;
  let a2, a3 be order-sorted MSAlgebra over a1;
To prove
     a2,a3 are_os_isomorphic
it is sufficient to prove
  thus ex b1 being ManySortedFunction of the Sorts of a2,the Sorts of a3 st
       b1 is_isomorphism a2,a3 & b1 is order-sorted(a1);

:: OSALG_3:def 2
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2, b3 being order-sorted MSAlgebra over b1 holds
   b2,b3 are_os_isomorphic
iff
   ex b4 being ManySortedFunction of the Sorts of b2,the Sorts of b3 st
      b4 is_isomorphism b2,b3 & b4 is order-sorted(b1);

:: OSALG_3:th 9
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being order-sorted MSAlgebra over b1 holds
   b2,b2 are_os_isomorphic;

:: OSALG_3:th 10
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2, b3 being non-empty order-sorted MSAlgebra over b1
      st b2,b3 are_os_isomorphic
   holds b3,b2 are_os_isomorphic;

:: OSALG_3:prednot 2 => OSALG_3:pred 2
definition
  let a1 be non empty non void order-sorted discernable OverloadedRSSign;
  let a2, a3 be order-sorted MSAlgebra over a1;
  redefine pred a2,a3 are_os_isomorphic;
  reflexivity;
::  for a1 being non empty non void order-sorted discernable OverloadedRSSign
::  for a2 being order-sorted MSAlgebra over a1 holds
::     a2,a2 are_os_isomorphic;
end;

:: OSALG_3:prednot 3 => OSALG_3:pred 3
definition
  let a1 be non empty non void order-sorted discernable OverloadedRSSign;
  let a2, a3 be non-empty order-sorted MSAlgebra over a1;
  redefine pred a2,a3 are_os_isomorphic;
  symmetry;
::  for a1 being non empty non void order-sorted discernable OverloadedRSSign
::  for a2, a3 being non-empty order-sorted MSAlgebra over a1
::        st a2,a3 are_os_isomorphic
::     holds a3,a2 are_os_isomorphic;
end;

:: OSALG_3:th 11
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2, b3, b4 being non-empty order-sorted MSAlgebra over b1
      st b2,b3 are_os_isomorphic & b3,b4 are_os_isomorphic
   holds b2,b4 are_os_isomorphic;

:: OSALG_3:th 12
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2, b3 being non-empty order-sorted MSAlgebra over b1
for b4 being ManySortedFunction of the Sorts of b2,the Sorts of b3
      st b4 is order-sorted(b1) & b4 is_homomorphism b2,b3
   holds Image b4 is order-sorted(b1);

:: OSALG_3:th 13
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2, b3 being non-empty order-sorted MSAlgebra over b1
for b4 being ManySortedFunction of the Sorts of b2,the Sorts of b3
   st b4 is order-sorted(b1)
for b5, b6 being Element of the OperSymbols of b1
   st b5 <= b6
for b7 being Element of Args(b5,b2)
for b8 being Element of Args(b6,b2)
      st b7 = b8
   holds b4 # b7 = b4 # b8;

:: OSALG_3:th 14
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty order-sorted monotone MSAlgebra over b1
for b3 being non-empty order-sorted MSAlgebra over b1
for b4 being ManySortedFunction of the Sorts of b2,the Sorts of b3
      st b4 is order-sorted(b1) & b4 is_homomorphism b2,b3
   holds Image b4 is order-sorted(b1) & Image b4 is order-sorted monotone MSAlgebra over b1;

:: OSALG_3:th 15
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being order-sorted monotone MSAlgebra over b1
for b3 being order-sorted MSSubAlgebra of b2 holds
   b3 is monotone(b1);

:: OSALG_3:exreg 1
registration
  let a1 be non empty non void order-sorted discernable OverloadedRSSign;
  let a2 be order-sorted monotone MSAlgebra over a1;
  cluster order-sorted monotone MSSubAlgebra of a2;
end;

:: OSALG_3:condreg 1
registration
  let a1 be non empty non void order-sorted discernable OverloadedRSSign;
  let a2 be order-sorted monotone MSAlgebra over a1;
  cluster order-sorted -> monotone (MSSubAlgebra of a2);
end;

:: OSALG_3:th 16
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2, b3 being non-empty order-sorted MSAlgebra over b1
for b4 being ManySortedFunction of the Sorts of b2,the Sorts of b3
      st b4 is_homomorphism b2,b3 & b4 is order-sorted(b1)
   holds ex b5 being ManySortedFunction of the Sorts of b2,the Sorts of Image b4 st
      b4 = b5 & b5 is order-sorted(b1) & b5 is_epimorphism b2,Image b4;

:: OSALG_3:th 17
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2, b3 being non-empty order-sorted MSAlgebra over b1
for b4 being ManySortedFunction of the Sorts of b2,the Sorts of b3
      st b4 is_homomorphism b2,b3 & b4 is order-sorted(b1)
   holds ex b5 being ManySortedFunction of the Sorts of b2,the Sorts of Image b4 st
      ex b6 being ManySortedFunction of the Sorts of Image b4,the Sorts of b3 st
         b5 is_epimorphism b2,Image b4 & b6 is_monomorphism Image b4,b3 & b4 = b6 ** b5 & b5 is order-sorted(b1) & b6 is order-sorted(b1);

:: OSALG_3:funcreg 2
registration
  let a1 be non empty non void order-sorted discernable OverloadedRSSign;
  let a2 be order-sorted MSAlgebra over a1;
  cluster MSAlgebra(#the Sorts of a2,the Charact of a2#) -> strict order-sorted;
end;

:: OSALG_3:th 18
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being order-sorted MSAlgebra over b1 holds
      b2 is monotone(b1)
   iff
      MSAlgebra(#the Sorts of b2,the Charact of b2#) is monotone(b1);

:: OSALG_3:th 19
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2, b3 being strict non-empty order-sorted MSAlgebra over b1
      st b2,b3 are_os_isomorphic
   holds    b2 is monotone(b1)
   iff
      b3 is monotone(b1);