Article YONEDA_1, MML version 4.99.1005

:: YONEDA_1:funcnot 1 => YONEDA_1:func 1
definition
  let a1 be non void Category-like CatStr;
  func EnsHom A1 -> non void Category-like CatStr equals
    Ens Hom a1;
end;

:: YONEDA_1:def 1
theorem
for b1 being non void Category-like CatStr holds
   EnsHom b1 = Ens Hom b1;

:: YONEDA_1:th 1
theorem
for b1 being non void Category-like CatStr
for b2, b3 being Relation-like Function-like set
for b4, b5 being Element of the Edges of EnsHom b1
      st cod b4 = dom b5 &
         [[dom b4,cod b4],b2] = b4 &
         [[dom b5,cod b5],b3] = b5
   holds [[dom b4,cod b5],b2 * b3] = b5 * b4;

:: YONEDA_1:funcnot 2 => YONEDA_1:func 2
definition
  let a1 be non void Category-like CatStr;
  let a2 be Element of the Vertices of a1;
  func <|A2,?> -> Functor of a1,EnsHom a1 equals
    hom?- a2;
end;

:: YONEDA_1:def 2
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Vertices of b1 holds
   <|b2,?> = hom?- b2;

:: YONEDA_1:th 3
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 holds
   <|cod b2,?> is_naturally_transformable_to <|dom b2,?>;

:: YONEDA_1:funcnot 3 => YONEDA_1:func 3
definition
  let a1 be non void Category-like CatStr;
  let a2 be Element of the Edges of a1;
  func <|A2,?> -> natural_transformation of <|cod a2,?>,<|dom a2,?> means
    for b1 being Element of the Vertices of a1 holds
       it . b1 = [[Hom(cod a2,b1),Hom(dom a2,b1)],hom(a2,id b1)];
end;

:: YONEDA_1:def 3
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1
for b3 being natural_transformation of <|cod b2,?>,<|dom b2,?> holds
      b3 = <|b2,?>
   iff
      for b4 being Element of the Vertices of b1 holds
         b3 . b4 = [[Hom(cod b2,b4),Hom(dom b2,b4)],hom(b2,id b4)];

:: YONEDA_1:th 4
theorem
for b1 being non void Category-like CatStr
for b2 being Element of the Edges of b1 holds
   [[<|cod b2,?>,<|dom b2,?>],<|b2,?>] is Element of the Edges of Functors(b1,EnsHom b1);

:: YONEDA_1:funcnot 4 => YONEDA_1:func 4
definition
  let a1 be non void Category-like CatStr;
  func Yoneda A1 -> Contravariant_Functor of a1,Functors(a1,EnsHom a1) means
    for b1 being Element of the Edges of a1 holds
       it . b1 = [[<|cod b1,?>,<|dom b1,?>],<|b1,?>];
end;

:: YONEDA_1:def 4
theorem
for b1 being non void Category-like CatStr
for b2 being Contravariant_Functor of b1,Functors(b1,EnsHom b1) holds
      b2 = Yoneda b1
   iff
      for b3 being Element of the Edges of b1 holds
         b2 . b3 = [[<|cod b3,?>,<|dom b3,?>],<|b3,?>];

:: YONEDA_1:funcnot 5 => YONEDA_1:func 5
definition
  let a1, a2 be non void Category-like CatStr;
  let a3 be Contravariant_Functor of a1,a2;
  let a4 be Element of the Vertices of a1;
  func A3 . A4 -> Element of the Vertices of a2 equals
    (Obj a3) . a4;
end;

:: YONEDA_1:def 5
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 . b4 = (Obj b3) . b4;

:: YONEDA_1:th 5
theorem
for b1 being non void Category-like CatStr
for b2 being Functor of b1,Functors(b1,EnsHom b1)
      st Obj b2 is one-to-one & b2 is faithful(b1, Functors(b1,EnsHom b1))
   holds b2 is one-to-one;

:: YONEDA_1:attrnot 1 => YONEDA_1:attr 1
definition
  let a1, a2 be non void Category-like CatStr;
  let a3 be Contravariant_Functor of a1,a2;
  attr a3 is faithful means
    for b1, b2 being Element of the Vertices of a1
       st Hom(b1,b2) <> {}
    for b3, b4 being Morphism of b1,b2
          st a3 . b3 = a3 . b4
       holds b3 = b4;
end;

:: YONEDA_1:dfs 6
definiens
  let a1, a2 be non void Category-like CatStr;
  let a3 be Contravariant_Functor of a1,a2;
To prove
     a3 is faithful
it is sufficient to prove
  thus for b1, b2 being Element of the Vertices of a1
       st Hom(b1,b2) <> {}
    for b3, b4 being Morphism of b1,b2
          st a3 . b3 = a3 . b4
       holds b3 = b4;

:: YONEDA_1:def 6
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Contravariant_Functor of b1,b2 holds
      b3 is faithful(b1, b2)
   iff
      for b4, b5 being Element of the Vertices of b1
         st Hom(b4,b5) <> {}
      for b6, b7 being Morphism of b4,b5
            st b3 . b6 = b3 . b7
         holds b6 = b7;

:: YONEDA_1:th 6
theorem
for b1 being non void Category-like CatStr
for b2 being Contravariant_Functor of b1,Functors(b1,EnsHom b1)
      st Obj b2 is one-to-one & b2 is faithful(b1, Functors(b1,EnsHom b1))
   holds b2 is one-to-one;

:: YONEDA_1:th 7
theorem
for b1 being non void Category-like CatStr holds
   Yoneda b1 is faithful(b1, Functors(b1,EnsHom b1));

:: YONEDA_1:th 8
theorem
for b1 being non void Category-like CatStr holds
   Yoneda b1 is one-to-one;

:: YONEDA_1:attrnot 2 => YONEDA_1:attr 2
definition
  let a1, a2 be non void Category-like CatStr;
  let a3 be Contravariant_Functor of a1,a2;
  attr a3 is full means
    for b1, b2 being Element of the Vertices of a1
       st Hom(a3 . b2,a3 . b1) <> {}
    for b3 being Morphism of a3 . b2,a3 . b1 holds
       Hom(b1,b2) <> {} &
        (ex b4 being Morphism of b1,b2 st
           b3 = a3 . b4);
end;

:: YONEDA_1:dfs 7
definiens
  let a1, a2 be non void Category-like CatStr;
  let a3 be Contravariant_Functor of a1,a2;
To prove
     a3 is full
it is sufficient to prove
  thus for b1, b2 being Element of the Vertices of a1
       st Hom(a3 . b2,a3 . b1) <> {}
    for b3 being Morphism of a3 . b2,a3 . b1 holds
       Hom(b1,b2) <> {} &
        (ex b4 being Morphism of b1,b2 st
           b3 = a3 . b4);

:: YONEDA_1:def 7
theorem
for b1, b2 being non void Category-like CatStr
for b3 being Contravariant_Functor of b1,b2 holds
      b3 is full(b1, b2)
   iff
      for b4, b5 being Element of the Vertices of b1
         st Hom(b3 . b5,b3 . b4) <> {}
      for b6 being Morphism of b3 . b5,b3 . b4 holds
         Hom(b4,b5) <> {} &
          (ex b7 being Morphism of b4,b5 st
             b6 = b3 . b7);

:: YONEDA_1:th 9
theorem
for b1 being non void Category-like CatStr holds
   Yoneda b1 is full(b1, Functors(b1,EnsHom b1));