
theorem Th21:
  for C being FormalContext holds DualHomomorphism(C) is bijective
proof
  let C be FormalContext;
  set f = DualHomomorphism(C);
A1: ConceptLattice(C) = LattStr(#B-carrier(C),B-join(C),B-meet(C)#) by
CONLAT_1:def 20;
A2: (ConceptLattice(C)).: = LattStr(#the carrier of ConceptLattice(C), the
L_meet of ConceptLattice(C), the L_join of ConceptLattice(C)#) by
LATTICE2:def 2;
  the carrier of ConceptLattice(C.:) c= rng f
  proof
    let u be object;
    assume u in the carrier of ConceptLattice(C.:);
    then reconsider u as Element of ConceptLattice(C.:);
    reconsider A9 = the Intent of u@ as Subset of the carrier of C;
    reconsider O9 = the Extent of u@ as Subset of the carrier' of C;
    set CP = ConceptStr(#A9,O9#);
A3: not(the Extent of u@ is empty & the Intent of u@ is empty) by
CONLAT_1:def 8;
A4: (AttributeDerivation(C)).(the Intent of CP) = (ObjectDerivation(C.:))
    .(the Extent of u@) by Th19
      .= the Extent of CP by CONLAT_1:def 10;
A5: (ObjectDerivation(C)).(the Extent of CP) = (AttributeDerivation(C.:))
    .(the Intent of u@) by Th18
      .= the Intent of CP by CONLAT_1:def 10;
    then CP is FormalConcept of C by A4,A3,CONLAT_1:def 8,def 10;
    then
A6: CP in the carrier of (ConceptLattice(C)) by A1,CONLAT_1:31;
    reconsider CP as strict FormalConcept of C by A5,A4,A3,CONLAT_1:def 8
,def 10;
A7: the Extent of CP.: = the Extent of u@ by Def8;
    f.CP = CP.: & the Intent of CP.: = the Intent of u@ by Def8,Def9;
    then
A8: f.CP = u by A7,CONLAT_1:def 21;
    CP in dom f by A2,A6,FUNCT_2:def 1;
    hence thesis by A8,FUNCT_1:def 3;
  end;
  then rng f = the carrier of ConceptLattice(C.:);
  then
A9: f is onto by FUNCT_2:def 3;
  f is one-to-one
  proof
    let a,b be object;
    assume that
A10: a in dom f & b in dom f and
A11: f.a = f.b;
    reconsider a,b as Element of (ConceptLattice(C)).: by A10;
    (ConceptLattice(C)).: = LattStr(#the carrier of ConceptLattice(C), the
L_meet of ConceptLattice(C), the L_join of ConceptLattice(C)#) by
LATTICE2:def 2;
    then reconsider a,b as Element of ConceptLattice(C);
A12: f.(a@) = f.a & f.(b@) = f.b by CONLAT_1:def 21;
A13: f.(a@) = (a@).: & f.(b@) = (b@).: by Def9;
    then
A14: the Extent of a@ = the Intent of (b@).: by A11,A12,Def8
      .= the Extent of b@ by Def8;
    the Intent of a@ = the Extent of (b@).: by A11,A13,A12,Def8
      .= the Intent of b@ by Def8;
    then a = b@ by A14,CONLAT_1:def 21
      .= b by CONLAT_1:def 21;
    hence thesis;
  end;
  hence thesis by A9;
end;
