Article PUA2MSS1, MML version 4.99.1005

:: PUA2MSS1:exreg 1
registration
  let a1, a2 be non empty set;
  cluster non empty Relation-like Function-like Relation of a1,a2;
end;

:: PUA2MSS1:condreg 1
registration
  let a1 be with_non-empty_elements set;
  cluster -> non-empty (FinSequence of a1);
end;

:: PUA2MSS1:exreg 2
registration
  let a1 be non empty set;
  cluster non empty Relation-like non-empty Function-like finite Function-yielding FinSequence-like homogeneous quasi_total FinSequence of PFuncs(a1 *,a1);
end;

:: PUA2MSS1:condreg 2
registration
  cluster non-empty -> non empty (UAStr);
end;

:: PUA2MSS1:th 1
theorem
for b1, b2 being Relation-like non-empty Function-like set
      st product b1 c= product b2
   holds proj1 b1 = proj1 b2 &
    (for b3 being set
          st b3 in proj1 b1
       holds b1 . b3 c= b2 . b3);

:: PUA2MSS1:th 2
theorem
for b1, b2 being Relation-like non-empty Function-like set
      st product b1 = product b2
   holds b1 = b2;

:: PUA2MSS1:funcnot 1 => PUA2MSS1:func 1
definition
  let a1 be non empty set;
  let a2 be FinSequence of PFuncs(a1 *,a1);
  redefine func rng a2 -> Element of bool PFuncs(a1 *,a1);
end;

:: PUA2MSS1:modenot 1 => PUA2MSS1:mode 1
definition
  let a1, a2 be non empty set;
  let a3 be non empty Element of bool PFuncs(a1,a2);
  redefine mode Element of a3 -> Function-like Relation of a1,a2;
end;

:: PUA2MSS1:modenot 2
definition
  let a1 be non-empty UAStr;
  mode OperSymbol of a1 is Element of dom the charact of a1;
end;

:: PUA2MSS1:modenot 3
definition
  let a1 be non-empty UAStr;
  mode operation of a1 is Element of rng the charact of a1;
end;

:: PUA2MSS1:funcnot 2 => PUA2MSS1:func 2
definition
  let a1 be non-empty UAStr;
  let a2 be Element of dom the charact of a1;
  func Den(A2,A1) -> Element of rng the charact of a1 equals
    (the charact of a1) . a2;
end;

:: PUA2MSS1:def 1
theorem
for b1 being non-empty UAStr
for b2 being Element of dom the charact of b1 holds
   Den(b2,b1) = (the charact of b1) . b2;

:: PUA2MSS1:th 3
theorem
for b1 being set
for b2 being a_partition of b1
for b3, b4, b5 being set
      st b3 in b4 & b4 in b2 & b3 in b5 & b5 in b2
   holds b4 = b5;

:: PUA2MSS1:th 4
theorem
for b1, b2 being set
   st b1 is_finer_than b2
for b3 being FinSequence of b1 holds
   ex b4 being FinSequence of b2 st
      product b3 c= product b4;

:: PUA2MSS1:th 5
theorem
for b1 being set
for b2, b3 being a_partition of b1
for b4 being Function-like quasi_total Relation of b2,b3
   st for b5 being set
           st b5 in b2
        holds b5 c= b4 . b5
for b5 being FinSequence of b2
for b6 being FinSequence of b3 holds
      product b5 c= product b6
   iff
      b4 * b5 = b6;

:: PUA2MSS1:th 6
theorem
for b1 being set
for b2 being Relation-like Function-like set
      st proj2 b2 c= union b1
   holds ex b3 being Relation-like Function-like set st
      proj1 b3 = proj1 b2 & proj2 b3 c= b1 & b2 in product b3;

:: PUA2MSS1:th 7
theorem
for b1 being set
for b2 being a_partition of b1
for b3 being FinSequence of b1 holds
   ex b4 being FinSequence of b2 st
      b3 in product b4;

:: PUA2MSS1:th 8
theorem
for b1, b2 being non empty set
for b3 being a_partition of b1
for b4 being a_partition of b2 holds
   {[:b5,b6:] where b5 is Element of b3, b6 is Element of b4: TRUE} is a_partition of [:b1,b2:];

:: PUA2MSS1:th 9
theorem
for b1 being non empty set
for b2 being a_partition of b1 holds
   {product b3 where b3 is Element of b2 *: TRUE} is a_partition of b1 *;

:: PUA2MSS1:th 10
theorem
for b1 being non empty set
for b2 being Element of NAT
for b3 being a_partition of b1 holds
   {product b4 where b4 is Element of b2 -tuples_on b3: TRUE} is a_partition of b2 -tuples_on b1;

:: PUA2MSS1:th 11
theorem
for b1 being non empty set
for b2 being set
   st b2 c= b1
for b3 being a_partition of b1 holds
   {b4 /\ b2 where b4 is Element of b3: b4 meets b2} is a_partition of b2;

:: PUA2MSS1:th 12
theorem
for b1 being non empty Relation-like Function-like set
for b2 being a_partition of proj1 b1 holds
   {b1 | b3 where b3 is Element of b2: TRUE} is a_partition of b1;

:: PUA2MSS1:th 14
theorem
for b1 being set
for b2 being FinSequence of SmallestPartition b1 holds
   ex b3 being FinSequence of b1 st
      product b2 = {b3};

:: PUA2MSS1:modenot 4 => PUA2MSS1:mode 2
definition
  let a1 be set;
  mode IndexedPartition of A1 -> Relation-like Function-like set means
    proj2 it is a_partition of a1 & it is one-to-one;
end;

:: PUA2MSS1:dfs 2
definiens
  let a1 be set;
  let a2 be Relation-like Function-like set;
To prove
     a2 is IndexedPartition of a1
it is sufficient to prove
  thus proj2 a2 is a_partition of a1 & a2 is one-to-one;

:: PUA2MSS1:def 3
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
      b2 is IndexedPartition of b1
   iff
      proj2 b2 is a_partition of b1 & b2 is one-to-one;

:: PUA2MSS1:funcnot 3 => PUA2MSS1:func 3
definition
  let a1 be set;
  let a2 be IndexedPartition of a1;
  redefine func rng a2 -> a_partition of a1;
end;

:: PUA2MSS1:condreg 3
registration
  let a1 be set;
  cluster -> non-empty one-to-one (IndexedPartition of a1);
end;

:: PUA2MSS1:condreg 4
registration
  let a1 be non empty set;
  cluster -> non empty (IndexedPartition of a1);
end;

:: PUA2MSS1:funcnot 4 => PUA2MSS1:func 4
definition
  let a1 be set;
  let a2 be a_partition of a1;
  redefine func id a2 -> IndexedPartition of a1;
end;

:: PUA2MSS1:funcnot 5 => PUA2MSS1:func 5
definition
  let a1 be set;
  let a2 be IndexedPartition of a1;
  let a3 be set;
  assume a3 in a1;
  func A2 -index_of A3 -> set means
    it in proj1 a2 & a3 in a2 . it;
end;

:: PUA2MSS1:def 4
theorem
for b1 being set
for b2 being IndexedPartition of b1
for b3 being set
   st b3 in b1
for b4 being set holds
      b4 = b2 -index_of b3
   iff
      b4 in proj1 b2 & b3 in b2 . b4;

:: PUA2MSS1:th 15
theorem
for b1 being set
for b2 being Relation-like non-empty Function-like set
      st Union b2 = b1 &
         (for b3, b4 being set
               st b3 in proj1 b2 & b4 in proj1 b2 & b3 <> b4
            holds b2 . b3 misses b2 . b4)
   holds b2 is IndexedPartition of b1;

:: PUA2MSS1:th 16
theorem
for b1, b2 being non empty set
for b3 being a_partition of b2
for b4 being Function-like quasi_total Relation of b1,b3
      st b3 c= rng b4 & b4 is one-to-one
   holds b4 is IndexedPartition of b2;

:: PUA2MSS1:sch 1
scheme PUA2MSS1:sch 1
{F1 -> non empty set,
  F2 -> non empty set,
  F3 -> Element of NAT,
  F4 -> Relation of F1(),F2(),
  F5 -> Relation of F1(),F2()}:
ex b1 being Relation of F1(),F2() st
   ex b2 being ManySortedSet of NAT st
      b1 = b2 . F3() &
       b2 . 0 = F4() &
       (for b3 being Element of NAT
       for b4 being Relation of F1(),F2()
             st b4 = b2 . b3
          holds b2 . (b3 + 1) = F5(b4, b3))


:: PUA2MSS1:sch 2
scheme PUA2MSS1:sch 2
{F1 -> non empty set,
  F2 -> non empty set}:
for b1, b2 being Relation of F1(),F2()
      st (for b3 being Element of F1()
         for b4 being Element of F2() holds
               [b3,b4] in b1
            iff
               P1[b3, b4]) &
         (for b3 being Element of F1()
         for b4 being Element of F2() holds
               [b3,b4] in b2
            iff
               P1[b3, b4])
   holds b1 = b2


:: PUA2MSS1:sch 3
scheme PUA2MSS1:sch 3
{F1 -> non empty set,
  F2 -> non empty set,
  F3 -> Element of NAT,
  F4 -> Relation of F1(),F2(),
  F5 -> Relation of F1(),F2()}:
for b1, b2 being Relation of F1(),F2()
      st (ex b3 being ManySortedSet of NAT st
            b1 = b3 . F3() &
             b3 . 0 = F4() &
             (for b4 being Element of NAT
             for b5 being Relation of F1(),F2()
                   st b5 = b3 . b4
                holds b3 . (b4 + 1) = F5(b5, b4))) &
         (ex b3 being ManySortedSet of NAT st
            b2 = b3 . F3() &
             b3 . 0 = F4() &
             (for b4 being Element of NAT
             for b5 being Relation of F1(),F2()
                   st b5 = b3 . b4
                holds b3 . (b4 + 1) = F5(b5, b4)))
   holds b1 = b2


:: PUA2MSS1:funcnot 6 => PUA2MSS1:func 6
definition
  let a1 be partial non-empty UAStr;
  func DomRel A1 -> Relation of the carrier of a1,the carrier of a1 means
    for b1, b2 being Element of the carrier of a1 holds
       [b1,b2] in it
    iff
       for b3 being Element of rng the charact of a1
       for b4, b5 being Relation-like Function-like FinSequence-like set holds
          (b4 ^ <*b1*>) ^ b5 in dom b3
       iff
          (b4 ^ <*b2*>) ^ b5 in dom b3;
end;

:: PUA2MSS1:def 5
theorem
for b1 being partial non-empty UAStr
for b2 being Relation of the carrier of b1,the carrier of b1 holds
      b2 = DomRel b1
   iff
      for b3, b4 being Element of the carrier of b1 holds
         [b3,b4] in b2
      iff
         for b5 being Element of rng the charact of b1
         for b6, b7 being Relation-like Function-like FinSequence-like set holds
            (b6 ^ <*b3*>) ^ b7 in dom b5
         iff
            (b6 ^ <*b4*>) ^ b7 in dom b5;

:: PUA2MSS1:funcreg 1
registration
  let a1 be partial non-empty UAStr;
  cluster DomRel a1 -> symmetric transitive total;
end;

:: PUA2MSS1:funcnot 7 => PUA2MSS1:func 7
definition
  let a1 be partial non-empty UAStr;
  let a2 be Relation of the carrier of a1,the carrier of a1;
  func A2 |^ A1 -> Relation of the carrier of a1,the carrier of a1 means
    for b1, b2 being Element of the carrier of a1 holds
       [b1,b2] in it
    iff
       [b1,b2] in a2 &
        (for b3 being Element of rng the charact of a1
        for b4, b5 being Relation-like Function-like FinSequence-like set
              st (b4 ^ <*b1*>) ^ b5 in dom b3 &
                 (b4 ^ <*b2*>) ^ b5 in dom b3
           holds [b3 . ((b4 ^ <*b1*>) ^ b5),b3 . ((b4 ^ <*b2*>) ^ b5)] in a2);
end;

:: PUA2MSS1:def 6
theorem
for b1 being partial non-empty UAStr
for b2, b3 being Relation of the carrier of b1,the carrier of b1 holds
   b3 = b2 |^ b1
iff
   for b4, b5 being Element of the carrier of b1 holds
      [b4,b5] in b3
   iff
      [b4,b5] in b2 &
       (for b6 being Element of rng the charact of b1
       for b7, b8 being Relation-like Function-like FinSequence-like set
             st (b7 ^ <*b4*>) ^ b8 in dom b6 &
                (b7 ^ <*b5*>) ^ b8 in dom b6
          holds [b6 . ((b7 ^ <*b4*>) ^ b8),b6 . ((b7 ^ <*b5*>) ^ b8)] in b2);

:: PUA2MSS1:funcnot 8 => PUA2MSS1:func 8
definition
  let a1 be partial non-empty UAStr;
  let a2 be Relation of the carrier of a1,the carrier of a1;
  let a3 be Element of NAT;
  func A2 |^(A1,A3) -> Relation of the carrier of a1,the carrier of a1 means
    ex b1 being ManySortedSet of NAT st
       it = b1 . a3 &
        b1 . 0 = a2 &
        (for b2 being Element of NAT
        for b3 being Relation of the carrier of a1,the carrier of a1
              st b3 = b1 . b2
           holds b1 . (b2 + 1) = b3 |^ a1);
end;

:: PUA2MSS1:def 7
theorem
for b1 being partial non-empty UAStr
for b2 being Relation of the carrier of b1,the carrier of b1
for b3 being Element of NAT
for b4 being Relation of the carrier of b1,the carrier of b1 holds
      b4 = b2 |^(b1,b3)
   iff
      ex b5 being ManySortedSet of NAT st
         b4 = b5 . b3 &
          b5 . 0 = b2 &
          (for b6 being Element of NAT
          for b7 being Relation of the carrier of b1,the carrier of b1
                st b7 = b5 . b6
             holds b5 . (b6 + 1) = b7 |^ b1);

:: PUA2MSS1:th 17
theorem
for b1 being partial non-empty UAStr
for b2 being Relation of the carrier of b1,the carrier of b1 holds
   b2 |^(b1,0) = b2 & b2 |^(b1,1) = b2 |^ b1;

:: PUA2MSS1:th 18
theorem
for b1 being partial non-empty UAStr
for b2 being Element of NAT
for b3 being Relation of the carrier of b1,the carrier of b1 holds
   b3 |^(b1,b2 + 1) = (b3 |^(b1,b2)) |^ b1;

:: PUA2MSS1:th 19
theorem
for b1 being partial non-empty UAStr
for b2, b3 being Element of NAT
for b4 being Relation of the carrier of b1,the carrier of b1 holds
   b4 |^(b1,b2 + b3) = (b4 |^(b1,b2)) |^(b1,b3);

:: PUA2MSS1:th 20
theorem
for b1 being partial non-empty UAStr
for b2 being symmetric transitive total Relation of the carrier of b1,the carrier of b1
      st b2 c= DomRel b1
   holds b2 |^ b1 is total(the carrier of b1, the carrier of b1) & b2 |^ b1 is symmetric & b2 |^ b1 is transitive;

:: PUA2MSS1:th 21
theorem
for b1 being partial non-empty UAStr
for b2 being Relation of the carrier of b1,the carrier of b1 holds
   b2 |^ b1 c= b2;

:: PUA2MSS1:th 22
theorem
for b1 being partial non-empty UAStr
for b2 being symmetric transitive total Relation of the carrier of b1,the carrier of b1
   st b2 c= DomRel b1
for b3 being Element of NAT holds
   b2 |^(b1,b3) is total(the carrier of b1, the carrier of b1) & b2 |^(b1,b3) is symmetric & b2 |^(b1,b3) is transitive;

:: PUA2MSS1:funcnot 9 => PUA2MSS1:func 9
definition
  let a1 be partial non-empty UAStr;
  func LimDomRel A1 -> Relation of the carrier of a1,the carrier of a1 means
    for b1, b2 being Element of the carrier of a1 holds
       [b1,b2] in it
    iff
       for b3 being Element of NAT holds
          [b1,b2] in (DomRel a1) |^(a1,b3);
end;

:: PUA2MSS1:def 8
theorem
for b1 being partial non-empty UAStr
for b2 being Relation of the carrier of b1,the carrier of b1 holds
      b2 = LimDomRel b1
   iff
      for b3, b4 being Element of the carrier of b1 holds
         [b3,b4] in b2
      iff
         for b5 being Element of NAT holds
            [b3,b4] in (DomRel b1) |^(b1,b5);

:: PUA2MSS1:th 23
theorem
for b1 being partial non-empty UAStr holds
   LimDomRel b1 c= DomRel b1;

:: PUA2MSS1:funcreg 2
registration
  let a1 be partial non-empty UAStr;
  cluster LimDomRel a1 -> symmetric transitive total;
end;

:: PUA2MSS1:prednot 1 => PUA2MSS1:pred 1
definition
  let a1 be non empty set;
  let a2 be Function-like Relation of a1 *,a1;
  let a3 be a_partition of a1;
  pred A2 is_partitable_wrt A3 means
    for b1 being FinSequence of a3 holds
       ex b2 being Element of a3 st
          a2 .: product b1 c= b2;
end;

:: PUA2MSS1:dfs 8
definiens
  let a1 be non empty set;
  let a2 be Function-like Relation of a1 *,a1;
  let a3 be a_partition of a1;
To prove
     a2 is_partitable_wrt a3
it is sufficient to prove
  thus for b1 being FinSequence of a3 holds
       ex b2 being Element of a3 st
          a2 .: product b1 c= b2;

:: PUA2MSS1:def 9
theorem
for b1 being non empty set
for b2 being Function-like Relation of b1 *,b1
for b3 being a_partition of b1 holds
      b2 is_partitable_wrt b3
   iff
      for b4 being FinSequence of b3 holds
         ex b5 being Element of b3 st
            b2 .: product b4 c= b5;

:: PUA2MSS1:prednot 2 => PUA2MSS1:pred 2
definition
  let a1 be non empty set;
  let a2 be Function-like Relation of a1 *,a1;
  let a3 be a_partition of a1;
  pred A2 is_exactly_partitable_wrt A3 means
    a2 is_partitable_wrt a3 &
     (for b1 being FinSequence of a3
           st product b1 meets dom a2
        holds product b1 c= dom a2);
end;

:: PUA2MSS1:dfs 9
definiens
  let a1 be non empty set;
  let a2 be Function-like Relation of a1 *,a1;
  let a3 be a_partition of a1;
To prove
     a2 is_exactly_partitable_wrt a3
it is sufficient to prove
  thus a2 is_partitable_wrt a3 &
     (for b1 being FinSequence of a3
           st product b1 meets dom a2
        holds product b1 c= dom a2);

:: PUA2MSS1:def 10
theorem
for b1 being non empty set
for b2 being Function-like Relation of b1 *,b1
for b3 being a_partition of b1 holds
      b2 is_exactly_partitable_wrt b3
   iff
      b2 is_partitable_wrt b3 &
       (for b4 being FinSequence of b3
             st product b4 meets dom b2
          holds product b4 c= dom b2);

:: PUA2MSS1:th 24
theorem
for b1 being partial non-empty UAStr
for b2 being Element of rng the charact of b1 holds
   b2 is_exactly_partitable_wrt SmallestPartition the carrier of b1;

:: PUA2MSS1:sch 4
scheme PUA2MSS1:sch 4
{F1 -> Relation-like Function-like FinSequence-like set,
  F2 -> Relation-like Function-like FinSequence-like set}:
P1[F2()]
provided
   P1[F1()]
and
   len F1() = len F2()
and
   for b1, b2 being Relation-like Function-like FinSequence-like set
   for b3, b4 being set
         st P1[(b1 ^ <*b3*>) ^ b2] & P2[b3, b4]
      holds P1[(b1 ^ <*b4*>) ^ b2]
and
   for b1 being Element of NAT
         st b1 in dom F1()
      holds P2[F1() . b1, F2() . b1];


:: PUA2MSS1:th 25
theorem
for b1 being partial non-empty UAStr
for b2 being Element of rng the charact of b1 holds
   b2 is_exactly_partitable_wrt Class LimDomRel b1;

:: PUA2MSS1:modenot 5 => PUA2MSS1:mode 3
definition
  let a1 be partial non-empty UAStr;
  mode a_partition of A1 -> a_partition of the carrier of a1 means
    for b1 being Element of rng the charact of a1 holds
       b1 is_exactly_partitable_wrt it;
end;

:: PUA2MSS1:dfs 10
definiens
  let a1 be partial non-empty UAStr;
  let a2 be a_partition of the carrier of a1;
To prove
     a2 is a_partition of a1
it is sufficient to prove
  thus for b1 being Element of rng the charact of a1 holds
       b1 is_exactly_partitable_wrt a2;

:: PUA2MSS1:def 11
theorem
for b1 being partial non-empty UAStr
for b2 being a_partition of the carrier of b1 holds
      b2 is a_partition of b1
   iff
      for b3 being Element of rng the charact of b1 holds
         b3 is_exactly_partitable_wrt b2;

:: PUA2MSS1:modenot 6 => PUA2MSS1:mode 4
definition
  let a1 be partial non-empty UAStr;
  mode IndexedPartition of A1 -> IndexedPartition of the carrier of a1 means
    rng it is a_partition of a1;
end;

:: PUA2MSS1:dfs 11
definiens
  let a1 be partial non-empty UAStr;
  let a2 be IndexedPartition of the carrier of a1;
To prove
     a2 is IndexedPartition of a1
it is sufficient to prove
  thus rng a2 is a_partition of a1;

:: PUA2MSS1:def 12
theorem
for b1 being partial non-empty UAStr
for b2 being IndexedPartition of the carrier of b1 holds
      b2 is IndexedPartition of b1
   iff
      rng b2 is a_partition of b1;

:: PUA2MSS1:funcnot 10 => PUA2MSS1:func 10
definition
  let a1 be partial non-empty UAStr;
  let a2 be IndexedPartition of a1;
  redefine func rng a2 -> a_partition of a1;
end;

:: PUA2MSS1:th 26
theorem
for b1 being partial non-empty UAStr holds
   Class LimDomRel b1 is a_partition of b1;

:: PUA2MSS1:th 27
theorem
for b1 being non empty set
for b2 being a_partition of b1
for b3 being FinSequence of b2
for b4, b5 being Relation-like Function-like FinSequence-like set
for b6, b7 being set
      st (b4 ^ <*b6*>) ^ b5 in product b3 &
         (ex b8 being Element of b2 st
            b6 in b8 & b7 in b8)
   holds (b4 ^ <*b7*>) ^ b5 in product b3;

:: PUA2MSS1:th 28
theorem
for b1 being partial non-empty UAStr
for b2 being a_partition of b1 holds
   b2 is_finer_than Class LimDomRel b1;

:: PUA2MSS1:prednot 3 => PUA2MSS1:pred 3
definition
  let a1, a2 be ManySortedSign;
  let a3, a4 be Relation-like Function-like set;
  pred A3,A4 form_morphism_between A1,A2 means
    proj1 a3 = the carrier of a1 &
     proj1 a4 = the OperSymbols of a1 &
     proj2 a3 c= the carrier of a2 &
     proj2 a4 c= the OperSymbols of a2 &
     (the ResultSort of a1) * a3 = a4 * the ResultSort of a2 &
     (for b1 being set
     for b2 being Relation-like Function-like set
           st b1 in the OperSymbols of a1 & b2 = (the Arity of a1) . b1
        holds b2 * a3 = (the Arity of a2) . (a4 . b1));
end;

:: PUA2MSS1:dfs 12
definiens
  let a1, a2 be ManySortedSign;
  let a3, a4 be Relation-like Function-like set;
To prove
     a3,a4 form_morphism_between a1,a2
it is sufficient to prove
  thus proj1 a3 = the carrier of a1 &
     proj1 a4 = the OperSymbols of a1 &
     proj2 a3 c= the carrier of a2 &
     proj2 a4 c= the OperSymbols of a2 &
     (the ResultSort of a1) * a3 = a4 * the ResultSort of a2 &
     (for b1 being set
     for b2 being Relation-like Function-like set
           st b1 in the OperSymbols of a1 & b2 = (the Arity of a1) . b1
        holds b2 * a3 = (the Arity of a2) . (a4 . b1));

:: PUA2MSS1:def 13
theorem
for b1, b2 being ManySortedSign
for b3, b4 being Relation-like Function-like set holds
   b3,b4 form_morphism_between b1,b2
iff
   proj1 b3 = the carrier of b1 &
    proj1 b4 = the OperSymbols of b1 &
    proj2 b3 c= the carrier of b2 &
    proj2 b4 c= the OperSymbols of b2 &
    (the ResultSort of b1) * b3 = b4 * the ResultSort of b2 &
    (for b5 being set
    for b6 being Relation-like Function-like set
          st b5 in the OperSymbols of b1 & b6 = (the Arity of b1) . b5
       holds b6 * b3 = (the Arity of b2) . (b4 . b5));

:: PUA2MSS1:th 29
theorem
for b1 being non empty non void ManySortedSign holds
   id the carrier of b1,id the OperSymbols of b1 form_morphism_between b1,b1;

:: PUA2MSS1:th 30
theorem
for b1, b2, b3 being ManySortedSign
for b4, b5, b6, b7 being Relation-like Function-like set
      st b4,b6 form_morphism_between b1,b2 & b5,b7 form_morphism_between b2,b3
   holds b4 * b5,b6 * b7 form_morphism_between b1,b3;

:: PUA2MSS1:prednot 4 => PUA2MSS1:pred 4
definition
  let a1, a2 be ManySortedSign;
  pred A1 is_rougher_than A2 means
    ex b1, b2 being Relation-like Function-like set st
       b1,b2 form_morphism_between a2,a1 & proj2 b1 = the carrier of a1 & proj2 b2 = the OperSymbols of a1;
end;

:: PUA2MSS1:dfs 13
definiens
  let a1, a2 be ManySortedSign;
To prove
     a1 is_rougher_than a2
it is sufficient to prove
  thus ex b1, b2 being Relation-like Function-like set st
       b1,b2 form_morphism_between a2,a1 & proj2 b1 = the carrier of a1 & proj2 b2 = the OperSymbols of a1;

:: PUA2MSS1:def 14
theorem
for b1, b2 being ManySortedSign holds
   b1 is_rougher_than b2
iff
   ex b3, b4 being Relation-like Function-like set st
      b3,b4 form_morphism_between b2,b1 & proj2 b3 = the carrier of b1 & proj2 b4 = the OperSymbols of b1;

:: PUA2MSS1:prednot 5 => PUA2MSS1:pred 5
definition
  let a1, a2 be non empty non void ManySortedSign;
  redefine pred a1 is_rougher_than a2;
  reflexivity;
::  for a1 being non empty non void ManySortedSign holds
::     a1 is_rougher_than a1;
end;

:: PUA2MSS1:th 31
theorem
for b1, b2, b3 being ManySortedSign
      st b1 is_rougher_than b2 & b2 is_rougher_than b3
   holds b1 is_rougher_than b3;

:: PUA2MSS1:funcnot 11 => PUA2MSS1:func 11
definition
  let a1 be partial non-empty UAStr;
  let a2 be a_partition of a1;
  func MSSign(A1,A2) -> strict ManySortedSign means
    the carrier of it = a2 &
     the OperSymbols of it = {[b1,b2] where b1 is Element of dom the charact of a1, b2 is Element of a2 *: product b2 meets dom Den(b1,a1)} &
     (for b1 being Element of dom the charact of a1
     for b2 being Element of a2 *
           st product b2 meets dom Den(b1,a1)
        holds (the Arity of it) . [b1,b2] = b2 &
         (Den(b1,a1)) .: product b2 c= (the ResultSort of it) . [b1,b2]);
end;

:: PUA2MSS1:def 15
theorem
for b1 being partial non-empty UAStr
for b2 being a_partition of b1
for b3 being strict ManySortedSign holds
      b3 = MSSign(b1,b2)
   iff
      the carrier of b3 = b2 &
       the OperSymbols of b3 = {[b4,b5] where b4 is Element of dom the charact of b1, b5 is Element of b2 *: product b5 meets dom Den(b4,b1)} &
       (for b4 being Element of dom the charact of b1
       for b5 being Element of b2 *
             st product b5 meets dom Den(b4,b1)
          holds (the Arity of b3) . [b4,b5] = b5 &
           (Den(b4,b1)) .: product b5 c= (the ResultSort of b3) . [b4,b5]);

:: PUA2MSS1:funcreg 3
registration
  let a1 be partial non-empty UAStr;
  let a2 be a_partition of a1;
  cluster MSSign(a1,a2) -> non empty strict non void;
end;

:: PUA2MSS1:funcnot 12 => PUA2MSS1:func 12
definition
  let a1 be partial non-empty UAStr;
  let a2 be a_partition of a1;
  let a3 be Element of the OperSymbols of MSSign(a1,a2);
  redefine func a3 `1 -> Element of dom the charact of a1;
end;

:: PUA2MSS1:funcnot 13 => PUA2MSS1:func 13
definition
  let a1 be partial non-empty UAStr;
  let a2 be a_partition of a1;
  let a3 be Element of the OperSymbols of MSSign(a1,a2);
  redefine func a3 `2 -> Element of a2 *;
end;

:: PUA2MSS1:prednot 6 => PUA2MSS1:pred 6
definition
  let a1 be partial non-empty UAStr;
  let a2 be non empty non void ManySortedSign;
  let a3 be MSAlgebra over a2;
  let a4 be IndexedPartition of the OperSymbols of a2;
  pred A1 can_be_characterized_by A2,A3,A4 means
    the Sorts of a3 is IndexedPartition of a1 &
     proj1 a4 = dom the charact of a1 &
     (for b1 being Element of dom the charact of a1 holds
        (the Charact of a3) | (a4 . b1) is IndexedPartition of Den(b1,a1));
end;

:: PUA2MSS1:dfs 15
definiens
  let a1 be partial non-empty UAStr;
  let a2 be non empty non void ManySortedSign;
  let a3 be MSAlgebra over a2;
  let a4 be IndexedPartition of the OperSymbols of a2;
To prove
     a1 can_be_characterized_by a2,a3,a4
it is sufficient to prove
  thus the Sorts of a3 is IndexedPartition of a1 &
     proj1 a4 = dom the charact of a1 &
     (for b1 being Element of dom the charact of a1 holds
        (the Charact of a3) | (a4 . b1) is IndexedPartition of Den(b1,a1));

:: PUA2MSS1:def 16
theorem
for b1 being partial non-empty UAStr
for b2 being non empty non void ManySortedSign
for b3 being MSAlgebra over b2
for b4 being IndexedPartition of the OperSymbols of b2 holds
      b1 can_be_characterized_by b2,b3,b4
   iff
      the Sorts of b3 is IndexedPartition of b1 &
       proj1 b4 = dom the charact of b1 &
       (for b5 being Element of dom the charact of b1 holds
          (the Charact of b3) | (b4 . b5) is IndexedPartition of Den(b5,b1));

:: PUA2MSS1:prednot 7 => PUA2MSS1:pred 7
definition
  let a1 be partial non-empty UAStr;
  let a2 be non empty non void ManySortedSign;
  pred A1 can_be_characterized_by A2 means
    ex b1 being MSAlgebra over a2 st
       ex b2 being IndexedPartition of the OperSymbols of a2 st
          a1 can_be_characterized_by a2,b1,b2;
end;

:: PUA2MSS1:dfs 16
definiens
  let a1 be partial non-empty UAStr;
  let a2 be non empty non void ManySortedSign;
To prove
     a1 can_be_characterized_by a2
it is sufficient to prove
  thus ex b1 being MSAlgebra over a2 st
       ex b2 being IndexedPartition of the OperSymbols of a2 st
          a1 can_be_characterized_by a2,b1,b2;

:: PUA2MSS1:def 17
theorem
for b1 being partial non-empty UAStr
for b2 being non empty non void ManySortedSign holds
      b1 can_be_characterized_by b2
   iff
      ex b3 being MSAlgebra over b2 st
         ex b4 being IndexedPartition of the OperSymbols of b2 st
            b1 can_be_characterized_by b2,b3,b4;

:: PUA2MSS1:th 32
theorem
for b1 being partial non-empty UAStr
for b2 being a_partition of b1 holds
   b1 can_be_characterized_by MSSign(b1,b2);

:: PUA2MSS1:th 33
theorem
for b1 being partial non-empty UAStr
for b2 being non empty non void ManySortedSign
for b3 being MSAlgebra over b2
for b4 being IndexedPartition of the OperSymbols of b2
   st b1 can_be_characterized_by b2,b3,b4
for b5 being Element of dom the charact of b1
for b6 being FinSequence of proj2 the Sorts of b3
      st product b6 c= dom Den(b5,b1)
   holds ex b7 being Element of the OperSymbols of b2 st
      (the_arity_of b7) * the Sorts of b3 = b6 & b7 in b4 . b5;

:: PUA2MSS1:th 34
theorem
for b1 being partial non-empty UAStr
for b2 being a_partition of b1
   st b2 = Class LimDomRel b1
for b3 being non empty non void ManySortedSign
      st b1 can_be_characterized_by b3
   holds MSSign(b1,b2) is_rougher_than b3;