Article ISOCAT_1, MML version 4.99.1005

:: ISOCAT_1:th 1
theorem
for b1, b2 being Relation-like Function-like set
      st b1 is one-to-one & b2 is one-to-one
   holds [:b1,b2:] is one-to-one;

:: ISOCAT_1:th 2
theorem
for b1, b2 being non void Category-like CatStr holds
rng pr1(b1,b2) = the Edges of b1 & rng pr2(b2,b1) = the Edges of b1;

:: ISOCAT_1:th 3
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b2,b1
for b4 being Element of the Edges of b2
      st b4 is invertible(b2)
   holds b3 . b4 is invertible(b1);

:: ISOCAT_1:th 7
theorem
for b1, b2 being non void Category-like CatStr
for b3, b4 being Functor of b1,b2
   st b3 is_transformable_to b4
for b5 being transformation of b3,b4
for b6 being Element of the Vertices of b1 holds
   b5 . b6 in Hom(b3 . b6,b4 . b6);

:: ISOCAT_1:th 8
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,b2
for b6, b7 being Functor of b2,b3
      st b4 is_transformable_to b5 & b6 is_transformable_to b7
   holds b6 * b4 is_transformable_to b7 * b5;

:: ISOCAT_1:th 9
theorem
for b1, b2 being non void Category-like CatStr
for b3, b4 being Functor of b1,b2
   st b3 is_transformable_to b4
for b5 being transformation of b3,b4
   st b5 is invertible(b1, b2, b3, b4)
for b6 being Element of the Vertices of b1 holds
   b3 . b6,b4 . b6 are_isomorphic;

:: ISOCAT_1:modenot 1 => CAT_1:mode 2
definition
  let a1, a2 be non void Category-like CatStr;
  mode Functor of A1,A2 -> Function-like quasi_total Relation of the Edges of a1,the Edges of a2 means
    (for b1 being Element of the Vertices of a1 holds
        ex b2 being Element of the Vertices of a2 st
           it . id b1 = id b2) &
     (for b1 being Element of the Edges of a1 holds
        it . id dom b1 = id dom (it . b1) &
         it . id cod b1 = id cod (it . b1)) &
     (for b1, b2 being Element of the Edges of a1
           st dom b2 = cod b1
        holds it . (b2 * b1) = (it . b2) * (it . b1));
end;

:: ISOCAT_1:dfs 1
definiens
  let a1, a2 be non void Category-like CatStr;
  let a3 be Function-like quasi_total Relation of the Edges of a1,the Edges of a2;
To prove
     a3 is Functor of a1,a2
it is sufficient to prove
  thus (for b1 being Element of the Vertices of a1 holds
        ex b2 being Element of the Vertices of a2 st
           a3 . id b1 = id b2) &
     (for b1 being Element of the Edges of a1 holds
        a3 . id dom b1 = id dom (a3 . b1) &
         a3 . id cod b1 = id cod (a3 . b1)) &
     (for b1, b2 being Element of the Edges of a1
           st dom b2 = cod b1
        holds a3 . (b2 * b1) = (a3 . b2) * (a3 . b1));

:: ISOCAT_1:def 1
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Function-like quasi_total Relation of the Edges of b1,the Edges of b2 holds
      b3 is Functor of b1,b2
   iff
      (for b4 being Element of the Vertices of b1 holds
          ex b5 being Element of the Vertices of b2 st
             b3 . id b4 = id b5) &
       (for b4 being Element of the Edges of b1 holds
          b3 . id dom b4 = id dom (b3 . b4) &
           b3 . id cod b4 = id cod (b3 . b4)) &
       (for b4, b5 being Element of the Edges of b1
             st dom b5 = cod b4
          holds b3 . (b5 * b4) = (b3 . b5) * (b3 . b4));

:: ISOCAT_1:th 10
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b2,b1
   st b3 is isomorphic(b2, b1)
for b4 being Element of the Edges of b1 holds
   ex b5 being Element of the Edges of b2 st
      b3 . b5 = b4;

:: ISOCAT_1:th 11
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b2,b1
   st b3 is isomorphic(b2, b1)
for b4 being Element of the Vertices of b1 holds
   ex b5 being Element of the Vertices of b2 st
      b3 . b5 = b4;

:: ISOCAT_1:th 12
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b1,b2
      st b3 is one-to-one
   holds Obj b3 is one-to-one;

:: ISOCAT_1:funcnot 1 => ISOCAT_1:func 1
definition
  let a1, a2 be non void Category-like CatStr;
  let a3 be Functor of a1,a2;
  assume a3 is isomorphic(a1, a2);
  func A3 " -> Functor of a2,a1 equals
    a3 ";
end;

:: ISOCAT_1:def 2
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b1,b2
      st b3 is isomorphic(b1, b2)
   holds b3 " = b3 ";

:: ISOCAT_1:prednot 1 => CAT_1:attr 9
notation
  let a1, a2 be non void Category-like CatStr;
  let a3 be Functor of a1,a2;
  synonym a3 is_an_isomorphism for isomorphic;
end;

:: ISOCAT_1:attrnot 1 => CAT_1:attr 9
definition
  let a1, a2 be non void Category-like CatStr;
  let a3 be Functor of a1,a2;
  attr a3 is isomorphic means
    a3 is one-to-one & rng a3 = the Edges of a2;
end;

:: ISOCAT_1:dfs 3
definiens
  let a1, a2 be non void Category-like CatStr;
  let a3 be Functor of a1,a2;
To prove
     a3 is isomorphic
it is sufficient to prove
  thus a3 is one-to-one & rng a3 = the Edges of a2;

:: ISOCAT_1:def 3
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b1,b2 holds
      b3 is isomorphic(b1, b2)
   iff
      b3 is one-to-one & rng b3 = the Edges of b2;

:: ISOCAT_1:th 13
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b1,b2
      st b3 is isomorphic(b1, b2)
   holds b3 " is isomorphic(b2, b1);

:: ISOCAT_1:th 14
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b1,b2
      st b3 is isomorphic(b1, b2)
   holds (Obj b3) " = Obj (b3 ");

:: ISOCAT_1:th 15
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b1,b2
      st b3 is isomorphic(b1, b2)
   holds b3 " " = b3;

:: ISOCAT_1:th 16
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b2,b1
      st b3 is isomorphic(b2, b1)
   holds b3 * (b3 ") = id b1 & b3 " * b3 = id b2;

:: ISOCAT_1:th 17
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of b1,b2
for b5 being Functor of b2,b3
      st b4 is isomorphic(b1, b2) & b5 is isomorphic(b2, b3)
   holds b5 * b4 is isomorphic(b1, b3);

:: ISOCAT_1:prednot 2 => ISOCAT_1:pred 1
definition
  let a1, a2 be non void Category-like CatStr;
  pred A1,A2 are_isomorphic means
    ex b1 being Functor of a1,a2 st
       b1 is isomorphic(a1, a2);
  symmetry;
::  for a1, a2 being non void Category-like CatStr
::        st a1,a2 are_isomorphic
::     holds a2,a1 are_isomorphic;
  reflexivity;
::  for a1 being non void Category-like CatStr holds
::     a1,a1 are_isomorphic;
end;

:: ISOCAT_1:dfs 4
definiens
  let a1, a2 be non void Category-like CatStr;
To prove
     a1,a2 are_isomorphic
it is sufficient to prove
  thus ex b1 being Functor of a1,a2 st
       b1 is isomorphic(a1, a2);

:: ISOCAT_1:def 4
theorem
for b1, b2 being non void Category-like CatStr holds
   b1,b2 are_isomorphic
iff
   ex b3 being Functor of b1,b2 st
      b3 is isomorphic(b1, b2);

:: ISOCAT_1:prednot 3 => ISOCAT_1:pred 1
notation
  let a1, a2 be non void Category-like CatStr;
  synonym a1 ~= a2 for a1,a2 are_isomorphic;
end;

:: ISOCAT_1:th 20
theorem
for b1, b2, b3 being non void Category-like CatStr
      st b1,b2 are_isomorphic & b2,b3 are_isomorphic
   holds b1,b3 are_isomorphic;

:: ISOCAT_1:th 21
theorem
for b1 being non void Category-like CatStr
for b2, b3 being set holds
[:1Cat(b2,b3),b1:],b1 are_isomorphic;

:: ISOCAT_1:th 22
theorem
for b1, b2 being non void Category-like CatStr holds
[:b1,b2:],[:b2,b1:] are_isomorphic;

:: ISOCAT_1:th 23
theorem
for b1, b2, b3 being non void Category-like CatStr holds
[:[:b1,b2:],b3:],[:b1,[:b2,b3:]:] are_isomorphic;

:: ISOCAT_1:th 24
theorem
for b1, b2, b3, b4 being non void Category-like CatStr
      st b1,b2 are_isomorphic & b3,b4 are_isomorphic
   holds [:b1,b3:],[:b2,b4:] are_isomorphic;

:: ISOCAT_1:funcnot 2 => ISOCAT_1:func 2
definition
  let a1, a2, a3 be non void Category-like CatStr;
  let a4, a5 be Functor of a1,a2;
  let a6 be transformation of a4,a5;
  let a7 be Functor of a2,a3;
  assume a4 is_transformable_to a5;
  func A7 * A6 -> transformation of a7 * a4,a7 * a5 equals
    a7 * a6;
end;

:: ISOCAT_1:def 5
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,b2
   st b4 is_transformable_to b5
for b6 being transformation of b4,b5
for b7 being Functor of b2,b3 holds
   b7 * b6 = b7 * b6;

:: ISOCAT_1:funcnot 3 => ISOCAT_1:func 3
definition
  let a1, a2, a3 be non void Category-like CatStr;
  let a4, a5 be Functor of a2,a3;
  let a6 be Functor of a1,a2;
  let a7 be transformation of a4,a5;
  assume a4 is_transformable_to a5;
  func A7 * A6 -> transformation of a4 * a6,a5 * a6 equals
    a7 * Obj a6;
end;

:: ISOCAT_1:def 6
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b2,b3
   st b4 is_transformable_to b5
for b6 being Functor of b1,b2
for b7 being transformation of b4,b5 holds
   b7 * b6 = b7 * Obj b6;

:: ISOCAT_1:th 25
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,b2
   st b4 is_transformable_to b5
for b6 being Functor of b3,b1
for b7 being transformation of b4,b5
for b8 being Element of the Vertices of b3 holds
   (b7 * b6) . b8 = b7 . (b6 . b8);

:: ISOCAT_1:th 26
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,b2
   st b4 is_transformable_to b5
for b6 being transformation of b4,b5
for b7 being Functor of b2,b3
for b8 being Element of the Vertices of b1 holds
   (b7 * b6) . b8 = b7 . (b6 . b8);

:: ISOCAT_1:th 27
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,b2
for b6, b7 being Functor of b2,b3
      st b4 is_naturally_transformable_to b5 & b6 is_naturally_transformable_to b7
   holds b6 * b4 is_naturally_transformable_to b7 * b5;

:: ISOCAT_1:funcnot 4 => ISOCAT_1:func 4
definition
  let a1, a2, a3 be non void Category-like CatStr;
  let a4, a5 be Functor of a1,a2;
  let a6 be natural_transformation of a4,a5;
  let a7 be Functor of a2,a3;
  assume a4 is_naturally_transformable_to a5;
  func A7 * A6 -> natural_transformation of a7 * a4,a7 * a5 equals
    a7 * a6;
end;

:: ISOCAT_1:def 7
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,b2
   st b4 is_naturally_transformable_to b5
for b6 being natural_transformation of b4,b5
for b7 being Functor of b2,b3 holds
   b7 * b6 = b7 * b6;

:: ISOCAT_1:th 28
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,b2
   st b4 is_naturally_transformable_to b5
for b6 being natural_transformation of b4,b5
for b7 being Functor of b2,b3
for b8 being Element of the Vertices of b1 holds
   (b7 * b6) . b8 = b7 . (b6 . b8);

:: ISOCAT_1:funcnot 5 => ISOCAT_1:func 5
definition
  let a1, a2, a3 be non void Category-like CatStr;
  let a4, a5 be Functor of a2,a3;
  let a6 be Functor of a1,a2;
  let a7 be natural_transformation of a4,a5;
  assume a4 is_naturally_transformable_to a5;
  func A7 * A6 -> natural_transformation of a4 * a6,a5 * a6 equals
    a7 * a6;
end;

:: ISOCAT_1:def 8
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b2,b3
   st b4 is_naturally_transformable_to b5
for b6 being Functor of b1,b2
for b7 being natural_transformation of b4,b5 holds
   b7 * b6 = b7 * b6;

:: ISOCAT_1:th 29
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,b2
   st b4 is_naturally_transformable_to b5
for b6 being Functor of b3,b1
for b7 being natural_transformation of b4,b5
for b8 being Element of the Vertices of b3 holds
   (b7 * b6) . b8 = b7 . (b6 . b8);

:: ISOCAT_1:th 30
theorem
for b1, b2 being non void Category-like CatStr
for b3, b4 being Functor of b2,b1
   st b3 is_naturally_transformable_to b4
for b5 being Element of the Vertices of b2 holds
   Hom(b3 . b5,b4 . b5) <> {};

:: ISOCAT_1:th 31
theorem
for b1, b2 being non void Category-like CatStr
for b3, b4 being Functor of b2,b1
   st b3 is_naturally_transformable_to b4
for b5, b6 being natural_transformation of b3,b4
      st for b7 being Element of the Vertices of b2 holds
           b5 . b7 = b6 . b7
   holds b5 = b6;

:: ISOCAT_1:th 32
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5, b6 being Functor of b2,b3
for b7 being Functor of b3,b1
for b8 being natural_transformation of b4,b5
for b9 being natural_transformation of b5,b6
      st b4 is_naturally_transformable_to b5 & b5 is_naturally_transformable_to b6
   holds b7 * (b9 `*` b8) = (b7 * b9) `*` (b7 * b8);

:: ISOCAT_1:th 33
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of b1,b2
for b5, b6, b7 being Functor of b2,b3
for b8 being natural_transformation of b5,b6
for b9 being natural_transformation of b6,b7
      st b5 is_naturally_transformable_to b6 & b6 is_naturally_transformable_to b7
   holds (b9 `*` b8) * b4 = (b9 * b4) `*` (b8 * b4);

:: ISOCAT_1:th 34
theorem
for b1, b2, b3, b4 being non void Category-like CatStr
for b5 being Functor of b1,b2
for b6 being Functor of b2,b3
for b7, b8 being Functor of b3,b4
for b9 being natural_transformation of b7,b8
      st b7 is_naturally_transformable_to b8
   holds (b9 * b6) * b5 = b9 * (b6 * b5);

:: ISOCAT_1:th 35
theorem
for b1, b2, b3, b4 being non void Category-like CatStr
for b5 being Functor of b1,b3
for b6, b7 being Functor of b3,b4
for b8 being Functor of b4,b2
for b9 being natural_transformation of b6,b7
      st b6 is_naturally_transformable_to b7
   holds (b8 * b9) * b5 = b8 * (b9 * b5);

:: ISOCAT_1:th 36
theorem
for b1, b2, b3, b4 being non void Category-like CatStr
for b5, b6 being Functor of b3,b4
for b7 being Functor of b4,b1
for b8 being Functor of b1,b2
for b9 being natural_transformation of b5,b6
      st b5 is_naturally_transformable_to b6
   holds (b8 * b7) * b9 = b8 * (b7 * b9);

:: ISOCAT_1:th 37
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of b1,b2
for b5 being Functor of b2,b3 holds
   (id b5) * b4 = id (b5 * b4);

:: ISOCAT_1:th 38
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of b1,b2
for b5 being Functor of b2,b3 holds
   b5 * id b4 = id (b5 * b4);

:: ISOCAT_1:th 39
theorem
for b1, b2 being non void Category-like CatStr
for b3, b4 being Functor of b2,b1
for b5 being natural_transformation of b3,b4
      st b3 is_naturally_transformable_to b4
   holds b5 * id b2 = b5;

:: ISOCAT_1:th 40
theorem
for b1, b2 being non void Category-like CatStr
for b3, b4 being Functor of b1,b2
for b5 being natural_transformation of b3,b4
      st b3 is_naturally_transformable_to b4
   holds (id b2) * b5 = b5;

:: ISOCAT_1:funcnot 6 => ISOCAT_1:func 6
definition
  let a1, a2, a3 be non void Category-like CatStr;
  let a4, a5 be Functor of a1,a2;
  let a6, a7 be Functor of a2,a3;
  let a8 be natural_transformation of a4,a5;
  let a9 be natural_transformation of a6,a7;
  func A9 (#) A8 -> natural_transformation of a6 * a4,a7 * a5 equals
    (a9 * a5) `*` (a6 * a8);
end;

:: ISOCAT_1:def 9
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,b2
for b6, b7 being Functor of b2,b3
for b8 being natural_transformation of b4,b5
for b9 being natural_transformation of b6,b7 holds
   b9 (#) b8 = (b9 * b5) `*` (b6 * b8);

:: ISOCAT_1:th 41
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b1,b2
for b6, b7 being Functor of b2,b3
for b8 being natural_transformation of b4,b5
for b9 being natural_transformation of b6,b7
      st b4 is_naturally_transformable_to b5 & b6 is_naturally_transformable_to b7
   holds b9 (#) b8 = (b7 * b8) `*` (b9 * b4);

:: ISOCAT_1:th 42
theorem
for b1, b2 being non void Category-like CatStr
for b3, b4 being Functor of b1,b2
for b5 being natural_transformation of b3,b4
      st b3 is_naturally_transformable_to b4
   holds (id id b2) (#) b5 = b5;

:: ISOCAT_1:th 43
theorem
for b1, b2 being non void Category-like CatStr
for b3, b4 being Functor of b2,b1
for b5 being natural_transformation of b3,b4
      st b3 is_naturally_transformable_to b4
   holds b5 (#) id id b2 = b5;

:: ISOCAT_1:th 44
theorem
for b1, b2, b3, b4 being non void Category-like CatStr
for b5, b6 being Functor of b1,b2
for b7, b8 being Functor of b2,b3
for b9, b10 being Functor of b3,b4
for b11 being natural_transformation of b5,b6
for b12 being natural_transformation of b7,b8
for b13 being natural_transformation of b9,b10
      st b5 is_naturally_transformable_to b6 & b7 is_naturally_transformable_to b8 & b9 is_naturally_transformable_to b10
   holds b13 (#) (b12 (#) b11) = (b13 (#) b12) (#) b11;

:: ISOCAT_1:th 45
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of b1,b2
for b5, b6 being Functor of b2,b3
for b7 being natural_transformation of b5,b6
      st b5 is_naturally_transformable_to b6
   holds b7 * b4 = b7 (#) id b4;

:: ISOCAT_1:th 46
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5 being Functor of b2,b3
for b6 being Functor of b3,b1
for b7 being natural_transformation of b4,b5
      st b4 is_naturally_transformable_to b5
   holds b6 * b7 = (id b6) (#) b7;

:: ISOCAT_1:th 47
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4, b5, b6 being Functor of b1,b2
for b7, b8, b9 being Functor of b2,b3
for b10 being natural_transformation of b4,b5
for b11 being natural_transformation of b5,b6
for b12 being natural_transformation of b7,b8
for b13 being natural_transformation of b8,b9
      st b4 is_naturally_transformable_to b5 & b5 is_naturally_transformable_to b6 & b7 is_naturally_transformable_to b8 & b8 is_naturally_transformable_to b9
   holds (b13 `*` b12) (#) (b11 `*` b10) = (b13 (#) b11) `*` (b12 (#) b10);

:: ISOCAT_1:th 48
theorem
for b1, b2, b3, b4 being non void Category-like CatStr
for b5 being Functor of b1,b2
for b6 being Functor of b3,b4
for b7, b8 being Functor of b2,b3
      st b7,b8 are_naturally_equivalent
   holds b6 * b7,b6 * b8 are_naturally_equivalent & b7 * b5,b8 * b5 are_naturally_equivalent;

:: ISOCAT_1:th 49
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b1,b2
for b4 being Functor of b2,b1
for b5 being Functor of b1,b1
      st b5,id b1 are_naturally_equivalent
   holds b3 * b5,b3 are_naturally_equivalent & b5 * b4,b4 are_naturally_equivalent;

:: ISOCAT_1:prednot 4 => ISOCAT_1:pred 2
definition
  let a1, a2 be non void Category-like CatStr;
  pred A1 is_equivalent_with A2 means
    ex b1 being Functor of a1,a2 st
       ex b2 being Functor of a2,a1 st
          b2 * b1,id a1 are_naturally_equivalent & b1 * b2,id a2 are_naturally_equivalent;
  symmetry;
::  for a1, a2 being non void Category-like CatStr
::        st a1 is_equivalent_with a2
::     holds a2 is_equivalent_with a1;
  reflexivity;
::  for a1 being non void Category-like CatStr holds
::     a1 is_equivalent_with a1;
end;

:: ISOCAT_1:dfs 10
definiens
  let a1, a2 be non void Category-like CatStr;
To prove
     a1 is_equivalent_with a2
it is sufficient to prove
  thus ex b1 being Functor of a1,a2 st
       ex b2 being Functor of a2,a1 st
          b2 * b1,id a1 are_naturally_equivalent & b1 * b2,id a2 are_naturally_equivalent;

:: ISOCAT_1:def 10
theorem
for b1, b2 being non void Category-like CatStr holds
   b1 is_equivalent_with b2
iff
   ex b3 being Functor of b1,b2 st
      ex b4 being Functor of b2,b1 st
         b4 * b3,id b1 are_naturally_equivalent & b3 * b4,id b2 are_naturally_equivalent;

:: ISOCAT_1:prednot 5 => ISOCAT_1:pred 2
notation
  let a1, a2 be non void Category-like CatStr;
  synonym a1,a2 are_equivalent for a1 is_equivalent_with a2;
end;

:: ISOCAT_1:th 50
theorem
for b1, b2 being non void Category-like CatStr
      st b1,b2 are_isomorphic
   holds b1 is_equivalent_with b2;

:: ISOCAT_1:th 53
theorem
for b1, b2, b3 being non void Category-like CatStr
      st b1 is_equivalent_with b2 & b2 is_equivalent_with b3
   holds b1 is_equivalent_with b3;

:: ISOCAT_1:modenot 2 => ISOCAT_1:mode 1
definition
  let a1, a2 be non void Category-like CatStr;
  assume a1 is_equivalent_with a2;
  mode Equivalence of A1,A2 -> Functor of a1,a2 means
    ex b1 being Functor of a2,a1 st
       b1 * it,id a1 are_naturally_equivalent & it * b1,id a2 are_naturally_equivalent;
end;

:: ISOCAT_1:dfs 11
definiens
  let a1, a2 be non void Category-like CatStr;
  let a3 be Functor of a1,a2;
To prove
     a3 is Equivalence of a1,a2
it is sufficient to prove
thus a1 is_equivalent_with a2;
  thus ex b1 being Functor of a2,a1 st
       b1 * a3,id a1 are_naturally_equivalent & a3 * b1,id a2 are_naturally_equivalent;

:: ISOCAT_1:def 11
theorem
for b1, b2 being non void Category-like CatStr
   st b1 is_equivalent_with b2
for b3 being Functor of b1,b2 holds
      b3 is Equivalence of b1,b2
   iff
      ex b4 being Functor of b2,b1 st
         b4 * b3,id b1 are_naturally_equivalent & b3 * b4,id b2 are_naturally_equivalent;

:: ISOCAT_1:th 54
theorem
for b1 being non void Category-like CatStr holds
   id b1 is Equivalence of b1,b1;

:: ISOCAT_1:th 55
theorem
for b1, b2, b3 being non void Category-like CatStr
   st b1 is_equivalent_with b2 & b2 is_equivalent_with b3
for b4 being Equivalence of b1,b2
for b5 being Equivalence of b2,b3 holds
   b5 * b4 is Equivalence of b1,b3;

:: ISOCAT_1:th 56
theorem
for b1, b2 being non void Category-like CatStr
   st b1 is_equivalent_with b2
for b3 being Equivalence of b1,b2 holds
   ex b4 being Equivalence of b2,b1 st
      b4 * b3,id b1 are_naturally_equivalent & b3 * b4,id b2 are_naturally_equivalent;

:: ISOCAT_1:th 57
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b1,b2
for b4 being Functor of b2,b1
      st b4 * b3,id b1 are_naturally_equivalent
   holds b3 is faithful(b1, b2);

:: ISOCAT_1:th 58
theorem
for b1, b2 being non void Category-like CatStr
   st b1 is_equivalent_with b2
for b3 being Equivalence of b1,b2 holds
   b3 is full(b1, b2) &
    b3 is faithful(b1, b2) &
    (for b4 being Element of the Vertices of b2 holds
       ex b5 being Element of the Vertices of b1 st
          b4,b3 . b5 are_isomorphic);