Article OPPCAT_1, MML version 4.99.1005

:: OPPCAT_1:funcnot 1 => OPPCAT_1:func 1
definition
  let a1, a2, a3 be non empty set;
  let a4 be Function-like Relation of [:a1,a2:],a3;
  redefine func ~ a4 -> Function-like Relation of [:a2,a1:],a3;
end;

:: OPPCAT_1:th 1
theorem
for b1 being non void Category-like CatStr holds
   CatStr(#the Vertices of b1,the Edges of b1,the Target of b1,the Source of b1,~ the Comp of b1,the Id of b1#) is non void Category-like CatStr;

:: OPPCAT_1:funcnot 2 => OPPCAT_1:func 2
definition
  let a1 be non void Category-like CatStr;
  func A1 opp -> strict non void Category-like CatStr equals
    CatStr(#the Vertices of a1,the Edges of a1,the Target of a1,the Source of a1,~ the Comp of a1,the Id of a1#);
end;

:: OPPCAT_1:def 1
theorem
for b1 being non void Category-like CatStr holds
   b1 opp = CatStr(#the Vertices of b1,the Edges of b1,the Target of b1,the Source of b1,~ the Comp of b1,the Id of b1#);

:: OPPCAT_1:funcnot 3 => OPPCAT_1:func 3
definition
  let a1 be non void Category-like CatStr;
  let a2 be Element of the Vertices of a1;
  func A2 opp -> Element of the Vertices of a1 opp equals
    a2;
end;

:: OPPCAT_1:def 2
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1 holds
   b2 opp = b2;

:: OPPCAT_1:funcnot 4 => OPPCAT_1:func 4
definition
  let a1 be non void Category-like CatStr;
  let a2 be Element of the Vertices of a1 opp;
  func opp A2 -> Element of the Vertices of a1 equals
    a2 opp;
end;

:: OPPCAT_1:def 3
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1 opp holds
   opp b2 = b2 opp;

:: OPPCAT_1:th 3
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1 holds
   b2 opp opp = b2;

:: OPPCAT_1:th 4
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1 holds
   opp (b2 opp) = b2;

:: OPPCAT_1:th 5
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1 opp holds
   (opp b2) opp = b2;

:: OPPCAT_1:funcnot 5 => OPPCAT_1:func 5
definition
  let a1 be non void Category-like CatStr;
  let a2 be Element of the Edges of a1;
  func A2 opp -> Element of the Edges of a1 opp equals
    a2;
end;

:: OPPCAT_1:def 4
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 holds
   b2 opp = b2;

:: OPPCAT_1:funcnot 6 => OPPCAT_1:func 6
definition
  let a1 be non void Category-like CatStr;
  let a2 be Element of the Edges of a1 opp;
  func opp A2 -> Element of the Edges of a1 equals
    a2 opp;
end;

:: OPPCAT_1:def 5
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 opp holds
   opp b2 = b2 opp;

:: OPPCAT_1:th 6
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 holds
   b2 opp opp = b2;

:: OPPCAT_1:th 7
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 holds
   opp (b2 opp) = b2;

:: OPPCAT_1:th 8
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 opp holds
   (opp b2) opp = b2;

:: OPPCAT_1:th 9
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 holds
   dom (b2 opp) = cod b2 & cod (b2 opp) = dom b2;

:: OPPCAT_1:th 10
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 opp holds
   dom opp b2 = cod b2 & cod opp b2 = dom b2;

:: OPPCAT_1:th 11
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 holds
   (dom b2) opp = cod (b2 opp) & (cod b2) opp = dom (b2 opp);

:: OPPCAT_1:th 12
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 opp holds
   opp dom b2 = cod opp b2 & opp cod b2 = dom opp b2;

:: OPPCAT_1:th 13
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Vertices of b1
for b4 being Element of the Edges of b1 holds
      b4 in Hom(b2,b3)
   iff
      b4 opp in Hom(b3 opp,b2 opp);

:: OPPCAT_1:th 14
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Vertices of b1 opp
for b4 being Element of the Edges of b1 opp holds
      b4 in Hom(b2,b3)
   iff
      opp b4 in Hom(opp b3,opp b2);

:: OPPCAT_1:th 15
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Vertices of b1
for b4 being Morphism of b2,b3
      st Hom(b2,b3) <> {}
   holds b4 opp is Morphism of b3 opp,b2 opp;

:: OPPCAT_1:th 16
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Vertices of b1 opp
for b4 being Morphism of b2,b3
      st Hom(b2,b3) <> {}
   holds opp b4 is Morphism of opp b3,opp b2;

:: OPPCAT_1:th 17
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Edges of b1
      st dom b3 = cod b2
   holds (b3 * b2) opp = b2 opp * (b3 opp);

:: OPPCAT_1:th 18
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Edges of b1
      st cod (b3 opp) = dom (b2 opp)
   holds (b3 * b2) opp = b2 opp * (b3 opp);

:: OPPCAT_1:th 19
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Element of the Edges of b1 opp
      st dom b3 = cod b2
   holds opp (b3 * b2) = (opp b2) * opp b3;

:: OPPCAT_1:th 20
theorem
for b1 being non void Category-like CatStr
for b2, b3, b4 being Element of the Vertices of b1
for b5 being Morphism of b2,b3
for b6 being Morphism of b3,b4
      st Hom(b2,b3) <> {} & Hom(b3,b4) <> {}
   holds (b6 * b5) opp = b5 opp * (b6 opp);

:: OPPCAT_1:th 21
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1 holds
   (id b2) opp = id (b2 opp);

:: OPPCAT_1:th 22
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1 opp holds
   opp id b2 = id opp b2;

:: OPPCAT_1:th 23
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 holds
      b2 opp is monic(b1 opp)
   iff
      b2 is epi(b1);

:: OPPCAT_1:th 24
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 holds
      b2 opp is epi(b1 opp)
   iff
      b2 is monic(b1);

:: OPPCAT_1:th 25
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 holds
      b2 opp is invertible(b1 opp)
   iff
      b2 is invertible(b1);

:: OPPCAT_1:th 26
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1 holds
      b2 is initial(b1)
   iff
      b2 opp is terminal(b1 opp);

:: OPPCAT_1:th 27
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1 holds
      b2 opp is initial(b1 opp)
   iff
      b2 is terminal(b1);

:: OPPCAT_1:funcnot 7 => OPPCAT_1:func 7
definition
  let a1, a2 be non void Category-like CatStr;
  let a3 be Function-like quasi_total Relation of the Edges of a1 opp,the Edges of a2;
  func /* A3 -> Function-like quasi_total Relation of the Edges of a1,the Edges of a2 means
    for b1 being Element of the Edges of a1 holds
       it . b1 = a3 . (b1 opp);
end;

:: OPPCAT_1:def 6
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Function-like quasi_total Relation of the Edges of b1 opp,the Edges of b2
for b4 being Function-like quasi_total Relation of the Edges of b1,the Edges of b2 holds
      b4 = /* b3
   iff
      for b5 being Element of the Edges of b1 holds
         b4 . b5 = b3 . (b5 opp);

:: OPPCAT_1:th 28
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Function-like quasi_total Relation of the Edges of b1 opp,the Edges of b2
for b4 being Element of the Edges of b1 opp holds
   (/* b3) . opp b4 = b3 . b4;

:: OPPCAT_1:th 29
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b1 opp,b2
for b4 being Element of the Vertices of b1 holds
   (Obj /* b3) . b4 = (Obj b3) . (b4 opp);

:: OPPCAT_1:th 30
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b1 opp,b2
for b4 being Element of the Vertices of b1 opp holds
   (Obj /* b3) . opp b4 = (Obj b3) . b4;

:: OPPCAT_1:modenot 1 => OPPCAT_1:mode 1
definition
  let a1, a2 be non void Category-like CatStr;
  mode Contravariant_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 cod (it . b1) &
         it . id cod b1 = id dom (it . b1)) &
     (for b1, b2 being Element of the Edges of a1
           st dom b2 = cod b1
        holds it . (b2 * b1) = (it . b1) * (it . b2));
end;

:: OPPCAT_1:dfs 7
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 Contravariant_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 cod (a3 . b1) &
         a3 . id cod b1 = id dom (a3 . b1)) &
     (for b1, b2 being Element of the Edges of a1
           st dom b2 = cod b1
        holds a3 . (b2 * b1) = (a3 . b1) * (a3 . b2));

:: OPPCAT_1:def 7
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 Contravariant_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 cod (b3 . b4) &
           b3 . id cod b4 = id dom (b3 . b4)) &
       (for b4, b5 being Element of the Edges of b1
             st dom b5 = cod b4
          holds b3 . (b5 * b4) = (b3 . b4) * (b3 . b5));

:: OPPCAT_1:th 31
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Contravariant_Functor of b1,b2
for b4 being Element of the Vertices of b1
for b5 being Element of the Vertices of b2
      st b3 . id b4 = id b5
   holds (Obj b3) . b4 = b5;

:: OPPCAT_1:th 32
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Contravariant_Functor of b1,b2
for b4 being Element of the Vertices of b1 holds
   b3 . id b4 = id ((Obj b3) . b4);

:: OPPCAT_1:th 33
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Contravariant_Functor of b1,b2
for b4 being Element of the Edges of b1 holds
   (Obj b3) . dom b4 = cod (b3 . b4) &
    (Obj b3) . cod b4 = dom (b3 . b4);

:: OPPCAT_1:th 34
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Contravariant_Functor of b1,b2
for b4, b5 being Element of the Edges of b1
      st dom b5 = cod b4
   holds dom (b3 . b4) = cod (b3 . b5);

:: OPPCAT_1:th 35
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b1 opp,b2 holds
   /* b3 is Contravariant_Functor of b1,b2;

:: OPPCAT_1:th 36
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Contravariant_Functor of b1,b2
for b5 being Contravariant_Functor of b2,b3 holds
   b5 * b4 is Functor of b1,b3;

:: OPPCAT_1:th 37
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Contravariant_Functor of b1 opp,b2
for b4 being Element of the Vertices of b1 holds
   (Obj /* b3) . b4 = (Obj b3) . (b4 opp);

:: OPPCAT_1:th 38
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Contravariant_Functor of b1 opp,b2
for b4 being Element of the Vertices of b1 opp holds
   (Obj /* b3) . opp b4 = (Obj b3) . b4;

:: OPPCAT_1:th 39
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Contravariant_Functor of b1 opp,b2 holds
   /* b3 is Functor of b1,b2;

:: OPPCAT_1:funcnot 8 => OPPCAT_1:func 8
definition
  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;
  func *' A3 -> Function-like quasi_total Relation of the Edges of a1 opp,the Edges of a2 means
    for b1 being Element of the Edges of a1 opp holds
       it . b1 = a3 . opp b1;
end;

:: OPPCAT_1:def 8
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
for b4 being Function-like quasi_total Relation of the Edges of b1 opp,the Edges of b2 holds
      b4 = *' b3
   iff
      for b5 being Element of the Edges of b1 opp holds
         b4 . b5 = b3 . opp b5;

:: OPPCAT_1:funcnot 9 => OPPCAT_1:func 9
definition
  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;
  func A3 *' -> Function-like quasi_total Relation of the Edges of a1,the Edges of a2 opp means
    for b1 being Element of the Edges of a1 holds
       it . b1 = (a3 . b1) opp;
end;

:: OPPCAT_1:def 9
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
for b4 being Function-like quasi_total Relation of the Edges of b1,the Edges of b2 opp holds
      b4 = b3 *'
   iff
      for b5 being Element of the Edges of b1 holds
         b4 . b5 = (b3 . b5) opp;

:: OPPCAT_1:th 40
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
for b4 being Element of the Edges of b1 holds
   (*' b3) . (b4 opp) = b3 . b4;

:: OPPCAT_1:th 41
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b1,b2
for b4 being Element of the Vertices of b1 opp holds
   (Obj *' b3) . b4 = (Obj b3) . opp b4;

:: OPPCAT_1:th 42
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b1,b2
for b4 being Element of the Vertices of b1 holds
   (Obj *' b3) . (b4 opp) = (Obj b3) . b4;

:: OPPCAT_1:th 43
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b1,b2
for b4 being Element of the Vertices of b1 holds
   (Obj (b3 *')) . b4 = ((Obj b3) . b4) opp;

:: OPPCAT_1:th 44
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Contravariant_Functor of b1,b2
for b4 being Element of the Vertices of b1 opp holds
   (Obj *' b3) . b4 = (Obj b3) . opp b4;

:: OPPCAT_1:th 45
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Contravariant_Functor of b1,b2
for b4 being Element of the Vertices of b1 holds
   (Obj *' b3) . (b4 opp) = (Obj b3) . b4;

:: OPPCAT_1:th 46
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Contravariant_Functor of b1,b2
for b4 being Element of the Vertices of b1 holds
   (Obj (b3 *')) . b4 = ((Obj b3) . b4) opp;

:: OPPCAT_1:th 47
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
for b4 being Element of the Edges of b1 holds
   (*' b3) *' . (b4 opp) = (b3 . b4) opp;

:: OPPCAT_1:th 48
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 = b3;

:: OPPCAT_1:th 49
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Function-like quasi_total Relation of the Edges of b1 opp,the Edges of b2 holds
   *' /* b3 = b3;

:: OPPCAT_1:th 50
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) *' = *' (b3 *');

:: OPPCAT_1:th 51
theorem
for b1 being non void Category-like CatStr
for b2 being strict non void Category-like CatStr
for b3 being Function-like quasi_total Relation of the Edges of b1,the Edges of b2 holds
   b3 *' *' = b3;

:: OPPCAT_1:th 52
theorem
for b1 being non void Category-like CatStr
for b2 being strict non void Category-like CatStr
for b3 being Function-like quasi_total Relation of the Edges of b2,the Edges of b1 holds
   *' *' b3 = b3;

:: OPPCAT_1:th 53
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Function-like quasi_total Relation of the Edges of b1,the Edges of b2
for b5 being Function-like quasi_total Relation of the Edges of b2,the Edges of b3 holds
   *' (b5 * b4) = b5 * *' b4;

:: OPPCAT_1:th 54
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Function-like quasi_total Relation of the Edges of b1,the Edges of b2
for b5 being Function-like quasi_total Relation of the Edges of b2,the Edges of b3 holds
   (b5 * b4) *' = b5 *' * b4;

:: OPPCAT_1:th 55
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Function-like quasi_total Relation of the Edges of b1,the Edges of b2
for b5 being Function-like quasi_total Relation of the Edges of b2,the Edges of b3 holds
   (*' (b5 * b4)) *' = (*' b5) *' * ((*' b4) *');

:: OPPCAT_1:th 56
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Contravariant_Functor of b1,b2 holds
   *' b3 is Functor of b1 opp,b2;

:: OPPCAT_1:th 57
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Contravariant_Functor of b1,b2 holds
   b3 *' is Functor of b1,b2 opp;

:: OPPCAT_1:th 58
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b1,b2 holds
   *' b3 is Contravariant_Functor of b1 opp,b2;

:: OPPCAT_1:th 59
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b1,b2 holds
   b3 *' is Contravariant_Functor of b1,b2 opp;

:: OPPCAT_1:th 60
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Contravariant_Functor of b1,b2
for b5 being Functor of b2,b3 holds
   b5 * b4 is Contravariant_Functor of b1,b3;

:: OPPCAT_1:th 61
theorem
for b1, b2, b3 being non void Category-like CatStr
for b4 being Functor of b1,b2
for b5 being Contravariant_Functor of b2,b3 holds
   b5 * b4 is Contravariant_Functor of b1,b3;

:: OPPCAT_1:th 62
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b1,b2
for b4 being Element of the Vertices of b1 holds
   (Obj ((*' b3) *')) . (b4 opp) = ((Obj b3) . b4) opp;

:: OPPCAT_1:th 63
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Contravariant_Functor of b1,b2
for b4 being Element of the Vertices of b1 holds
   (Obj ((*' b3) *')) . (b4 opp) = ((Obj b3) . b4) opp;

:: OPPCAT_1:th 64
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Functor of b1,b2 holds
   (*' b3) *' is Functor of b1 opp,b2 opp;

:: OPPCAT_1:th 65
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Contravariant_Functor of b1,b2 holds
   (*' b3) *' is Contravariant_Functor of b1 opp,b2 opp;

:: OPPCAT_1:funcnot 10 => OPPCAT_1:func 10
definition
  let a1 be non void Category-like CatStr;
  func id* A1 -> Contravariant_Functor of a1,a1 opp equals
    (id a1) *';
end;

:: OPPCAT_1:def 10
theorem
for b1 being non void Category-like CatStr holds
   id* b1 = (id b1) *';

:: OPPCAT_1:funcnot 11 => OPPCAT_1:func 11
definition
  let a1 be non void Category-like CatStr;
  func *id A1 -> Contravariant_Functor of a1 opp,a1 equals
    *' id a1;
end;

:: OPPCAT_1:def 11
theorem
for b1 being non void Category-like CatStr holds
   *id b1 = *' id b1;

:: OPPCAT_1:th 66
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 holds
   (id* b1) . b2 = b2 opp;

:: OPPCAT_1:th 67
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1 holds
   (Obj id* b1) . b2 = b2 opp;

:: OPPCAT_1:th 68
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 opp holds
   (*id b1) . b2 = opp b2;

:: OPPCAT_1:th 69
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1 opp holds
   (Obj *id b1) . b2 = opp b2;

:: OPPCAT_1:th 70
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 = b3 * *id b1 & b3 *' = (id* b2) * b3;