
theorem Th14:
  for L being complete Lattice for C being FormalContext holds
ConceptLattice(C),L are_isomorphic iff ex g being Function of the carrier of C,
  the carrier of L, d being Function of the carrier' of C, the carrier of L st
rng(g) is supremum-dense & rng(d) is infimum-dense & for o being Object of C, a
  being Attribute of C holds o is-connected-with a iff g.o [= d.a
proof
  let L be complete Lattice;
  let C be FormalContext;
  hereby
    assume ConceptLattice(C),L are_isomorphic;
    then consider f being Homomorphism of ConceptLattice(C),L such that
A1: f is bijective by LATTICE4:def 3;
    take g = f * gamma(C), d = f * delta(C);
    thus rng(g) is supremum-dense
    proof
      let a be Element of L;
      consider b being Element of ConceptLattice(C) such that
A2:   a = f.b by A1,LATTICE4:6;
      rng(gamma(C)) is supremum-dense by Th12;
      then consider D9 being Subset of rng(gamma(C)) such that
A3:   b = "\/"(D9,ConceptLattice(C));
      set D = {f.x where x is Element of ConceptLattice(C) : x in D9};
A4:   for r being Element of L st D is_less_than r holds a [= r
      proof
        let r be Element of L;
        consider r9 being Element of ConceptLattice(C) such that
A5:     r = f.r9 by A1,LATTICE4:6;
        reconsider r9 as Element of ConceptLattice(C);
        assume
A6:     D is_less_than r;
        for q being Element of ConceptLattice(C) st q in D9 holds q [= r9
        proof
          let q be Element of ConceptLattice(C);
          assume q in D9;
          then f.q in {f.x where x is Element of ConceptLattice(C) : x in D9};
          then f.q [= f.r9 by A6,A5;
          hence thesis by A1,LATTICE4:5;
        end;
        then D9 is_less_than r9;
        then b [= r9 by A3,LATTICE3:def 21;
        hence thesis by A1,A2,A5,LATTICE4:5;
      end;
A7:   D c= rng(g)
      proof
        let x be object;
        assume x in D;
        then consider x9 being Element of ConceptLattice(C) such that
A8:     x = f.x9 and
A9:     x9 in D9;
        consider y being object such that
A10:    y in dom(gamma(C)) & (gamma(C)).y = x9 by A9,FUNCT_1:def 3;
        dom f = the carrier of ConceptLattice(C) by FUNCT_2:def 1;
        then
A11:    y in dom(f * (gamma(C))) by A10,FUNCT_1:11;
        x = (f * (gamma(C))).y by A8,A10,FUNCT_1:13;
        hence thesis by A11,FUNCT_1:def 3;
      end;
A12:  D9 is_less_than b by A3,LATTICE3:def 21;
      D is_less_than a
      proof
        let q be Element of L;
        assume q in D;
        then consider q9 being Element of ConceptLattice(C) such that
A13:    q = f.q9 and
A14:    q9 in D9;
        q9 [= b by A12,A14;
        hence thesis by A1,A2,A13,LATTICE4:5;
      end;
      then a = "\/"(D,L) by A4,LATTICE3:def 21;
      hence thesis by A7;
    end;
    thus rng(d) is infimum-dense
    proof
      let a be Element of L;
      consider b being Element of ConceptLattice(C) such that
A15:  a = f.b by A1,LATTICE4:6;
      rng(delta(C)) is infimum-dense by Th12;
      then consider D9 being Subset of rng(delta(C)) such that
A16:  b = "/\"(D9,ConceptLattice(C));
      set D = {f.x where x is Element of ConceptLattice(C) : x in D9};
A17:  for r being Element of L st r is_less_than D holds r [= a
      proof
        let r be Element of L;
        consider r9 being Element of ConceptLattice(C) such that
A18:    r = f.r9 by A1,LATTICE4:6;
        reconsider r9 as Element of ConceptLattice(C);
        assume
A19:    r is_less_than D;
        r9 is_less_than D9
        proof
          let q be Element of ConceptLattice(C);
          assume q in D9;
          then f.q in {f.x where x is Element of ConceptLattice(C) : x in D9};
          then f.r9 [= f.q by A19,A18;
          hence thesis by A1,LATTICE4:5;
        end;
        then r9 [= b by A16,LATTICE3:34;
        hence thesis by A1,A15,A18,LATTICE4:5;
      end;
A20:  D c= rng(d)
      proof
        let x be object;
        assume x in D;
        then consider x9 being Element of ConceptLattice(C) such that
A21:    x = f.x9 and
A22:    x9 in D9;
        consider y being object such that
A23:    y in dom(delta(C)) & (delta(C)).y = x9 by A22,FUNCT_1:def 3;
        dom f = the carrier of ConceptLattice(C) by FUNCT_2:def 1;
        then
A24:    y in dom(f * (delta(C))) by A23,FUNCT_1:11;
        x = (f * (delta(C))).y by A21,A23,FUNCT_1:13;
        hence thesis by A24,FUNCT_1:def 3;
      end;
A25:  b is_less_than D9 by A16,LATTICE3:34;
      a is_less_than D
      proof
        let q be Element of L;
        assume q in D;
        then consider q9 being Element of ConceptLattice(C) such that
A26:    q = f.q9 and
A27:    q9 in D9;
        b [= q9 by A25,A27;
        hence thesis by A1,A15,A26,LATTICE4:5;
      end;
      then a = "/\"(D,L) by A17,LATTICE3:34;
      hence thesis by A20;
    end;
    let o be Object of C, a be Attribute of C;
A28: o is-connected-with a iff (gamma(C)).o [= (delta(C)).a by Th13;
    hereby
      dom(delta(C)) = the carrier' of C by FUNCT_2:def 1;
      then
A29:  f.((delta(C)).a) = (f * (delta(C))).a by FUNCT_1:13;
      dom(gamma(C)) = the carrier of C by FUNCT_2:def 1;
      then
A30:  f.((gamma(C)).o) = (f * (gamma(C))).o by FUNCT_1:13;
      assume o is-connected-with a;
      hence g.o [= d.a by A1,A28,A30,A29,LATTICE4:5;
    end;
    dom(gamma(C)) = the carrier of C by FUNCT_2:def 1;
    then
A31: f.((gamma(C)).o) = (f * (gamma(C))).o by FUNCT_1:13;
    dom(delta(C)) = the carrier' of C by FUNCT_2:def 1;
    then
A32: f.((delta(C)).a) = (f * (delta(C))).a by FUNCT_1:13;
    assume g.o [= d.a;
    then (gamma(C)).o [= (delta(C)).a by A1,A31,A32,LATTICE4:5;
    hence o is-connected-with a by Th13;
  end;
  given g being Function of the carrier of C, the carrier of L, d being
  Function of the carrier' of C, the carrier of L such that
A33: rng(g) is supremum-dense and
A34: rng(d) is infimum-dense and
A35: for o being Object of C, a being Attribute of C holds o
  is-connected-with a iff g.o [= d.a;
  set fi = {[x,ConceptStr(#O,A#)] where x is Element of L, O is Subset of the
carrier of C, A is Subset of the carrier' of C : O = {o where o is Object of C
  : g.o [= x} & A = {a where a is Attribute of C : x [= d.a} };
  set f = {[ConceptStr(#O,A#),x] where O is Subset of the carrier of C, A is
  Subset of the carrier' of C, x is Element of L : ConceptStr(#O,A#) is
  FormalConcept of C & x = "\/"({g.o where o is Object of C : o in O},L) };
A36: ConceptLattice(C) = LattStr(#B-carrier(C),B-join(C),B-meet(C)#) by
CONLAT_1:def 20;
A37: f c= [:the carrier of ConceptLattice(C), the carrier of L:]
  proof
    let y be object;
    assume y in f;
    then consider O being Subset of the carrier of C, A being Subset of the
    carrier' of C, x being Element of L such that
A38: y = [ConceptStr(#O,A#),x] and
A39: ConceptStr(#O,A#) is FormalConcept of C and
    x = "\/"({g.o where o is Object of C : o in O},L);
    ConceptStr(#O,A#) in the carrier of ConceptLattice(C) by A36,A39,
CONLAT_1:31;
    hence thesis by A38,ZFMISC_1:def 2;
  end;
  fi c= [:the carrier of L, the carrier of ConceptLattice(C):]
  proof
    let y be object;
    assume y in fi;
    then consider
    x being Element of L, O being Subset of the carrier of C, A being
    Subset of the carrier' of C such that
A40: y = [x,ConceptStr(#O,A#)] and
A41: O = {o where o is Object of C : g.o [= x} and
A42: A = {a where a is Attribute of C : x [= d.a};
A43: (AttributeDerivation(C)).(the Intent of ConceptStr(#O,A#)) = the
    Extent of ConceptStr(#O,A#)
    proof
      thus (AttributeDerivation(C)). (the Intent of ConceptStr(#O,A#)) c= the
      Extent of ConceptStr(#O,A#)
      proof
        let u be object;
A44:    "/\"({d.a9 where a9 is Attribute of C : x [= d.a9},L) = x
        proof
          consider D being Subset of rng(d) such that
A45:      "/\"(D,L) = x by A34;
A46:      x is_less_than D by A45,LATTICE3:34;
          D c= {d.a9 where a9 is Attribute of C : x [= d.a9}
          proof
            let u be object;
            assume
A47:        u in D;
            then consider v being object such that
A48:        v in dom d and
A49:        u = d.v by FUNCT_1:def 3;
            reconsider v as Attribute of C by A48;
            x [= d.v by A46,A47,A49;
            hence thesis by A49;
          end;
          then
A50:      "/\"({d.a9 where a9 is Attribute of C : x [= d.a9},L) [= x by A45,
LATTICE3:45;
          x is_less_than {d.a9 where a9 is Attribute of C : x [= d.a9}
          proof
            let u be Element of L;
            assume u in {d.a9 where a9 is Attribute of C : x [= d.a9};
            then ex v being Attribute of C st u = d.v & x [= d.v;
            hence thesis;
          end;
          then x [= "/\"({d.a9 where a9 is Attribute of C : x [= d.a9},L) by
LATTICE3:39;
          hence thesis by A50,LATTICES:8;
        end;
        assume
        u in (AttributeDerivation(C)).(the Intent of ConceptStr(#O,A #));
        then u in { o where o is Object of C : for a being Attribute of C st
        a in the Intent of ConceptStr(#O,A#) holds o is-connected-with a } by
CONLAT_1:def 4;
        then consider u9 being Object of C such that
A51:    u9 = u and
A52:    for a being Attribute of C st a in the Intent of ConceptStr
        (#O,A#) holds u9 is-connected-with a;
A53:    for v being Attribute of C st v in {a where a is Attribute of C:
        x [= d.a} holds g.u9 [= d.v by A35,A42,A52;
        g.u9 is_less_than {d.a where a is Attribute of C: x [= d.a}
        proof
          let q be Element of L;
          assume q in {d.a where a is Attribute of C: x [= d.a};
          then consider b being Attribute of C such that
A54:      q = d.b and
A55:      x [= d.b;
          b in {a where a is Attribute of C: x [= d.a} by A55;
          hence thesis by A53,A54;
        end;
        then g.u9 [= x by A44,LATTICE3:34;
        hence thesis by A41,A51;
      end;
      let u be object;
      assume u in the Extent of ConceptStr(#O,A#);
      then consider u9 being Object of C such that
A56:  u9 = u and
A57:  g.u9 [= x by A41;
A58:  for v being Attribute of C st v in {a where a is Attribute of C: x
      [= d.a} holds g.u9 [= d.v
      proof
        let v be Attribute of C;
        assume v in {a where a is Attribute of C : x [= d.a};
        then ex v9 being Attribute of C st v9 = v & x [= d.v9;
        hence thesis by A57,LATTICES:7;
      end;
      for v being Attribute of C st v in {a where a is Attribute of C: x
      [= d.a} holds u9 is-connected-with v
      proof
        let v be Attribute of C;
        assume v in {a where a is Attribute of C : x [= d.a};
        then g.u9 [= d.v by A58;
        hence thesis by A35;
      end;
      then u9 in {o where o is Object of C : for a being Attribute of C st a
      in the Intent of ConceptStr(#O,A#) holds o is-connected-with a } by A42;
      hence thesis by A56,CONLAT_1:def 4;
    end;
    (ObjectDerivation(C)).(the Extent of ConceptStr(#O,A#)) = the Intent
    of ConceptStr(#O,A#)
    proof
      thus (ObjectDerivation(C)). (the Extent of ConceptStr(#O,A#)) c= the
      Intent of ConceptStr(#O,A#)
      proof
        let u be object;
A59:    "\/"({g.a9 where a9 is Object of C : g.a9 [= x},L) = x
        proof
          consider D being Subset of rng(g) such that
A60:      "\/"(D,L) = x by A33;
A61:      D is_less_than x by A60,LATTICE3:def 21;
          D c= {g.a9 where a9 is Object of C : g.a9 [= x}
          proof
            let u be object;
            assume
A62:        u in D;
            then consider v being object such that
A63:        v in dom g and
A64:        u = g.v by FUNCT_1:def 3;
            reconsider v as Object of C by A63;
            g.v [= x by A61,A62,A64;
            hence thesis by A64;
          end;
          then
A65:      x [= "\/"({g.a9 where a9 is Object of C : g.a9 [= x},L ) by A60,
LATTICE3:45;
          {g.a9 where a9 is Object of C : g.a9 [= x} is_less_than x
          proof
            let u be Element of L;
            assume u in {g.a9 where a9 is Object of C : g.a9 [= x};
            then ex v being Object of C st u = g.v & g.v [= x;
            hence thesis;
          end;
          then "\/"({g.a9 where a9 is Object of C : g.a9 [= x},L) [= x by
LATTICE3:def 21;
          hence thesis by A65,LATTICES:8;
        end;
        assume u in (ObjectDerivation(C)).(the Extent of ConceptStr(#O,A#));
        then u in { o where o is Attribute of C : for a being Object of C st
        a in the Extent of ConceptStr(#O,A#) holds a is-connected-with o } by
CONLAT_1:def 3;
        then consider u9 being Attribute of C such that
A66:    u9 = u and
A67:    for a being Object of C st a in the Extent of ConceptStr(#O,
          A#) holds a is-connected-with u9;
A68:    for v being Object of C st v in {a where a is Object of C: g.a
        [= x} holds g.v [= d.u9 by A35,A41,A67;
        {g.a where a is Object of C: g.a [= x} is_less_than d.u9
        proof
          let q be Element of L;
          assume q in {g.a where a is Object of C: g.a [= x};
          then consider b being Object of C such that
A69:      q = g.b and
A70:      g.b [= x;
          b in {a where a is Object of C: g.a [= x} by A70;
          hence thesis by A68,A69;
        end;
        then x [= d.u9 by A59,LATTICE3:def 21;
        hence thesis by A42,A66;
      end;
      let u be object;
      assume u in the Intent of ConceptStr(#O,A#);
      then consider u9 being Attribute of C such that
A71:  u9 = u and
A72:  x [= d.u9 by A42;
A73:  for v being Object of C st v in {a where a is Object of C: g.a [=
      x} holds g.v [= d.u9
      proof
        let v be Object of C;
        assume v in {a where a is Object of C : g.a [= x};
        then ex v9 being Object of C st v9 = v & g.v9 [= x;
        hence thesis by A72,LATTICES:7;
      end;
      for v being Object of C st v in {a where a is Object of C : g.a [=
      x} holds v is-connected-with u9
      proof
        let v be Object of C;
        assume v in {a where a is Object of C : g.a [= x};
        then g.v [= d.u9 by A73;
        hence thesis by A35;
      end;
      then u9 in {o where o is Attribute of C : for a being Object of C st a
      in the Extent of ConceptStr(#O,A#) holds a is-connected-with o } by A41;
      hence thesis by A71,CONLAT_1:def 3;
    end;
    then ConceptStr(#O,A#) is FormalConcept of C by A43,Lm3,CONLAT_1:def 10;
    then ConceptStr(#O,A#) in the carrier of ConceptLattice(C) by A36,
CONLAT_1:31;
    hence thesis by A40,ZFMISC_1:def 2;
  end;
  then reconsider
  fi as Relation of the carrier of L, the carrier of ConceptLattice
  (C);
A74: for x,y1,y2 being object st [x,y1] in fi & [x,y2] in fi holds y1 = y2
  proof
    let x,y1,y2 be object;
    assume that
A75: [x,y1] in fi and
A76: [x,y2] in fi;
    consider z being Element of L, O being Subset of the carrier of C, A being
    Subset of the carrier' of C such that
A77: [x,y1] = [z,ConceptStr(#O,A#)] and
A78: O = {o where o is Object of C : g.o [= z} & A = {a where a is
    Attribute of C : z [= d.a} by A75;
    consider z9 being Element of L, O9 being Subset of the carrier of C, A9
    being Subset of the carrier' of C such that
A79: [x,y2] = [z9,ConceptStr(#O9,A9#)] and
A80: O9 = {o where o is Object of C : g.o [= z9} & A9 = {a where a is
    Attribute of C : z9 [= d.a} by A76;
A81:  z = x by A77,XTUPLE_0:1
      .= z9 by A79,XTUPLE_0:1;
    thus y1 = [x,y1]`2
      .= [x,y2]`2 by A77,A78,A79,A80,A81
      .= y2;
  end;
  the carrier of L c= dom fi
  proof
    let y be object;
    assume y in the carrier of L;
    then reconsider y as Element of L;
    set A = {a where a is Attribute of C : y [= d.a};
    A c= the carrier' of C
    proof
      let u be object;
      assume u in A;
      then ex u9 being Attribute of C st u9 = u & y [= d.u9;
      hence thesis;
    end;
    then reconsider A as Subset of the carrier' of C;
    set O = {o where o is Object of C : g.o [= y};
    O c= the carrier of C
    proof
      let u be object;
      assume u in O;
      then ex u9 being Object of C st u9 = u & g.u9 [= y;
      hence thesis;
    end;
    then reconsider O as Subset of the carrier of C;
    [y,ConceptStr(#O,A#)] in fi;
    hence thesis by XTUPLE_0:def 12;
  end;
  then
A82: the carrier of L = dom fi;
  reconsider f as Relation of the carrier of ConceptLattice(C), the carrier of
  L by A37;
  the carrier of ConceptLattice(C) c= dom f
  proof
    let y be object;
    assume y in the carrier of ConceptLattice(C);
    then
A83: y is strict FormalConcept of C by A36,CONLAT_1:31;
    then consider O9 being Subset of the carrier of C, A9 being Subset of the
    carrier' of C such that
A84: y = ConceptStr(#O9,A9#);
    reconsider z = "\/"({g.o where o is Object of C : o in O9},L) as Element
    of L;
    [y,z] in f by A83,A84;
    hence thesis by XTUPLE_0:def 12;
  end;
  then
A85: the carrier of ConceptLattice(C) = dom f;
  reconsider fi as Function of the carrier of L, the carrier of ConceptLattice
  (C) by A82,A74,FUNCT_1:def 1,FUNCT_2:def 1;
  for x,y1,y2 being object st [x,y1] in f & [x,y2] in f holds y1 = y2
  proof
    let x,y1,y2 be object;
    assume that
A86: [x,y1] in f and
A87: [x,y2] in f;
    consider O being Subset of the carrier of C, A being Subset of the
    carrier' of C, z being Element of L such that
A88: [x,y1] = [ConceptStr(#O,A#),z] and
    ConceptStr(#O,A#) is FormalConcept of C and
A89: z = "\/"({g.o where o is Object of C : o in O},L) by A86;
    consider O9 being Subset of the carrier of C, A9 being Subset of the
    carrier' of C, z9 being Element of L such that
A90: [x,y2] = [ConceptStr(#O9,A9#),z9] and
    ConceptStr(#O9,A9#) is FormalConcept of C and
A91: z9 = "\/"({g.o where o is Object of C : o in O9},L) by A87;
A92: ConceptStr(#O,A#) = [ConceptStr(#O,A#),z]`1
      .= [x,y1]`1 by A88
      .= x
      .= [x,y2]`1
      .= [ConceptStr(#O9,A9#),z9]`1 by A90
      .= ConceptStr(#O9,A9#);
    thus y1 = [x,y1]`2
      .= [x,y2]`2 by A88,A89,A90,A91,A92
      .= y2;
  end;
  then reconsider
  f as Function of the carrier of ConceptLattice(C), the carrier of
  L by A85,FUNCT_1:def 1,FUNCT_2:def 1;
A93: ConceptLattice(C) = LattStr(#B-carrier(C),B-join(C),B-meet(C)#) by
CONLAT_1:def 20;
A94: for a being Element of L holds f.(fi.a) = a
  proof
    let a be Element of L;
    reconsider a as Element of L;
    set A = {a9 where a9 is Attribute of C : a [= d.a9};
    A c= the carrier' of C
    proof
      let u be object;
      assume u in A;
      then ex u9 being Attribute of C st u9 = u & a [= d.u9;
      hence thesis;
    end;
    then reconsider A as Subset of the carrier' of C;
    set O = {o where o is Object of C : g.o [= a};
    O c= the carrier of C
    proof
      let u be object;
      assume u in O;
      then ex u9 being Object of C st u9 = u & g.u9 [= a;
      hence thesis;
    end;
    then reconsider O as Subset of the carrier of C;
    set b = "\/"({g.o where o is Object of C : o in the Extent of ConceptStr(#
      O,A#)},L);
A95: "\/"({g.o where o is Object of C : o in {o9 where o9 is Object of C
    : g.o9 [= a}},L) = a
    proof
      consider D being Subset of rng(g) such that
A96:  "\/"(D,L) = a by A33;
A97:  D is_less_than a by A96,LATTICE3:def 21;
      D c= {g.o where o is Object of C : o in {o9 where o9 is Object of
C:    g.o9 [= a}}
      proof
        let u be object;
        assume
A98:    u in D;
        then consider v being object such that
A99:    v in dom g and
A100:    u = g.v by FUNCT_1:def 3;
        reconsider v as Object of C by A99;
        g.v [= a by A97,A98,A100;
        then v in {o9 where o9 is Object of C : g.o9 [= a};
        hence thesis by A100;
      end;
      then
A101:  a [= "\/"({g.o where o is Object of C : o in {o9 where o9 is
      Object of C : g.o9 [= a}},L) by A96,LATTICE3:45;
      {g.o where o is Object of C : o in {o9 where o9 is Object of C : g
      .o9 [= a}} is_less_than a
      proof
        let u be Element of L;
        assume u in {g.o where o is Object of C : o in {o9 where o9 is
        Object of C : g.o9 [= a}};
        then consider v being Object of C such that
A102:   u = g.v and
A103:   v in {o9 where o9 is Object of C : g.o9 [= a};
        ex ov being Object of C st ov = v & g.ov [= a by A103;
        hence thesis by A102;
      end;
      then "\/"({g.o where o is Object of C : o in {o9 where o9 is Object of
C:    g.o9 [= a}},L) [= a by LATTICE3:def 21;
      hence thesis by A101,LATTICES:8;
    end;
A104: [a,ConceptStr(#O,A#)] in fi;
    then ConceptStr(#O,A#) in rng(fi) by XTUPLE_0:def 13;
    then ConceptStr(#O,A#) is FormalConcept of C by A93,CONLAT_1:31;
    then [ConceptStr(#O,A#),b] in f;
    then f.ConceptStr(#O,A#) = b by FUNCT_1:1;
    hence thesis by A104,A95,FUNCT_1:1;
  end;
  the carrier of L c= rng f
  proof
    let u be object;
A105: dom f = the carrier of ConceptLattice(C) by FUNCT_2:def 1;
    assume
A106: u in the carrier of L;
    then u in dom fi by FUNCT_2:def 1;
    then consider v being object such that
A107: [u,v] in fi by XTUPLE_0:def 12;
    reconsider u as Element of L by A106;
    v in rng fi by A107,XTUPLE_0:def 13;
    then reconsider v as Element of ConceptLattice(C);
    f.v = f.(fi.u) by A107,FUNCT_1:1
      .= u by A94;
    hence thesis by A105,FUNCT_1:def 3;
  end;
  then
A108: rng f = the carrier of L;
A109: for x being Element of ConceptLattice(C) holds f.x = "/\"({d.a where a
  is Attribute of C : a in the Intent of x@},L)
  proof
    let x be Element of ConceptLattice(C);
    set y = "\/"({g.o where o is Object of C : o in the Extent of x@},L);
A110: [x@, y] in f;
A111: for o being object holds o in {d.a9 where a9 is Attribute of C : y [= d
    .a9} implies o in {d.a where a is Attribute of C : a in the Intent of x@}
    proof
      let o be object;
      assume o in {d.a9 where a9 is Attribute of C : y [= d.a9};
      then consider u being Attribute of C such that
A112: o = d.u and
A113: y [= d.u;
A114: for o being Object of C st o in the Extent of x@ holds g.o [= d.u
      proof
        let o be Object of C;
        assume o in the Extent of x@;
        then g.o in {g.o9 where o9 is Object of C : o9 in the Extent of x @};
        then g.o [= y by LATTICE3:38;
        hence thesis by A113,LATTICES:7;
      end;
      for o being Object of C st o in the Extent of x@ holds o
      is-connected-with u
      proof
        let o be Object of C;
        assume o in the Extent of x@;
        then g.o [= d.u by A114;
        hence thesis by A35;
      end;
      then u in {a9 where a9 is Attribute of C : for o9 being Object of C st
      o9 in the Extent of x@ holds o9 is-connected-with a9};
      then u in (ObjectDerivation(C)).(the Extent of x@) by CONLAT_1:def 3;
      then u in the Intent of x@ by CONLAT_1:def 10;
      hence thesis by A112;
    end;
A115: for o9 being Object of C st o9 in the Extent of x@ for a9 being
    Attribute of C st a9 in the Intent of x@ holds g.o9 [= d.a9
    proof
      let o9 be Object of C;
      assume
A116: o9 in the Extent of x@;
      let a9 be Attribute of C;
      assume a9 in the Intent of x@;
      then a9 in (ObjectDerivation(C)).(the Extent of x@) by CONLAT_1:def 10;
      then a9 in {a where a is Attribute of C : for o being Object of C st o
      in the Extent of x@ holds o is-connected-with a } by CONLAT_1:def 3;
      then ex aa being Attribute of C st aa = a9 & for o being Object of C st
      o in the Extent of x@ holds o is-connected-with aa;
      then o9 is-connected-with a9 by A116;
      hence thesis by A35;
    end;
A117: for o being object holds o in {d.a where a is Attribute of C : a in the
    Intent of x@} implies o in {d.a9 where a9 is Attribute of C : y [= d.a9}
    proof
      let o be object;
      assume o in {d.a where a is Attribute of C : a in the Intent of x@};
      then consider b being Attribute of C such that
A118: o = d.b and
A119: b in the Intent of x@;
      {g.o9 where o9 is Object of C : o9 in the Extent of x@} is_less_than d.b
      proof
        let q be Element of L;
        assume q in {g.o9 where o9 is Object of C : o9 in the Extent of x@};
        then ex u being Object of C st q = g.u & u in the Extent of x @;
        hence thesis by A115,A119;
      end;
      then y [= d.b by LATTICE3:def 21;
      hence thesis by A118;
    end;
A120: "/\"({d.a9 where a9 is Attribute of C : y [= d.a9},L) = y
    proof
      consider D being Subset of rng(d) such that
A121: "/\"(D,L) = y by A34;
A122: y is_less_than D by A121,LATTICE3:34;
      D c= {d.a9 where a9 is Attribute of C : y [= d.a9}
      proof
        let u be object;
        assume
A123:   u in D;
        then consider v being object such that
A124:   v in dom d and
A125:   u = d.v by FUNCT_1:def 3;
        reconsider v as Attribute of C by A124;
        y [= d.v by A122,A123,A125;
        hence thesis by A125;
      end;
      then
A126: "/\"({d.a9 where a9 is Attribute of C : y [= d.a9},L) [= y by A121,
LATTICE3:45;
      y is_less_than {d.a9 where a9 is Attribute of C : y [= d.a9}
      proof
        let u be Element of L;
        assume u in {d.a9 where a9 is Attribute of C : y [= d.a9};
        then ex v being Attribute of C st u = d.v & y [= d.v;
        hence thesis;
      end;
      then
y [= "/\"({d.a9 where a9 is Attribute of C : y [= d.a9},L) by LATTICE3:39;
      hence thesis by A126,LATTICES:8;
    end;
    f.x = f.x@ by CONLAT_1:def 21
      .= y by A110,FUNCT_1:1;
    hence thesis by A111,A117,A120,TARSKI:2;
  end;
A127: for a being Element of ConceptLattice(C) holds fi.(f.a) = a
  proof
    let a be Element of ConceptLattice(C);
    set x = "/\"({d.u where u is Attribute of C : u in the Intent of a@},L);
    set A = {a9 where a9 is Attribute of C : x [= d.a9};
    A c= the carrier' of C
    proof
      let u be object;
      assume u in A;
      then ex u9 being Attribute of C st u9 = u & x [= d.u9;
      hence thesis;
    end;
    then reconsider A as Subset of the carrier' of C;
    set O = {o where o is Object of C : g.o [= x};
    O c= the carrier of C
    proof
      let u be object;
      assume u in O;
      then ex u9 being Object of C st u9 = u & g.u9 [= x;
      hence thesis;
    end;
    then reconsider O as Subset of the carrier of C;
A128: O = {o where o is Object of C : for a9 being Attribute of C st a9 in
    the Intent of a@ holds g.o [= d.a9 }
    proof
      thus O c= {o where o is Object of C: for a9 being Attribute of C st a9
      in the Intent of a@ holds g.o [= d.a9 }
      proof
        let u be object;
        assume u in O;
        then consider o9 being Object of C such that
A129:   u = o9 and
A130:   g.o9 [= x;
        for a9 being Attribute of C st a9 in the Intent of a@ holds g.o9
        [= d.a9
        proof
          let a9 be Attribute of C;
          assume a9 in the Intent of a@;
          then d.a9 in {d.y where y is Attribute of C : y in the Intent of a
          @};
          then x [= d.a9 by LATTICE3:38;
          hence thesis by A130,LATTICES:7;
        end;
        hence thesis by A129;
      end;
      let u be object;
      assume u in {o where o is Object of C : for a9 being Attribute of C
      st a9 in the Intent of a@ holds g.o [= d.a9 };
      then consider o9 being Object of C such that
A131: o9 = u and
A132: for a9 being Attribute of C st a9 in the Intent of a@ holds g.
      o9 [= d.a9;
      g.o9 is_less_than {d.y where y is Attribute of C : y in the Intent of a@}
      proof
        let q be Element of L;
        assume q in {d.y where y is Attribute of C : y in the Intent of a@};
        then ex qa being Attribute of C st q = d.qa & qa in the Intent of a@;
        hence thesis by A132;
      end;
      then g.o9 [= x by LATTICE3:34;
      hence thesis by A131;
    end;
    {o where o is Object of C : for a9 being Attribute of C st a9 in the
    Intent of a@ holds g.o [= d.a9 } = {o where o is Object of C : for a9 being
    Attribute of C st a9 in the Intent of a@ holds o is-connected-with a9 }
    proof
      thus {o where o is Object of C : for a9 being Attribute of C st a9 in
the Intent of a@ holds g.o [= d.a9 } c= {o where o is Object of C : for a9
being Attribute of C st a9 in the Intent of a@ holds o is-connected-with a9 }
      proof
        let u be object;
        assume u in {o where o is Object of C : for a9 being Attribute of C
        st a9 in the Intent of a@ holds g.o [= d.a9 };
        then consider u9 being Object of C such that
A133:   u = u9 and
A134:   for a9 being Attribute of C st a9 in the Intent of a@ holds
        g.u9 [= d.a9;
        for a9 being Attribute of C st a9 in the Intent of a@ holds u9
        is-connected-with a9
        proof
          let a9 be Attribute of C;
          assume a9 in the Intent of a@;
          then g.u9 [= d.a9 by A134;
          hence thesis by A35;
        end;
        hence thesis by A133;
      end;
      let u be object;
      assume u in {o where o is Object of C : for a9 being Attribute of C
      st a9 in the Intent of a@ holds o is-connected-with a9 };
      then consider u9 being Object of C such that
A135: u = u9 and
A136: for a9 being Attribute of C st a9 in the Intent of a@ holds u9
      is-connected-with a9;
      for a9 being Attribute of C st a9 in the Intent of a@ holds g.u9 [= d.a9
           by A35,A136;
      hence thesis by A135;
    end;
    then
A137: O = (AttributeDerivation(C)).(the Intent of a@) by A128,CONLAT_1:def 4
      .= the Extent of a@ by CONLAT_1:def 10;
A138: fi.("/\"({d.u where u is Attribute of C : u in the Intent of a@},L))
    = fi.(f.a) by A109;
    [x,ConceptStr(#O,A#)] in fi;
    then
A139: fi.x = ConceptStr(#O,A#) by FUNCT_1:1;
    then ConceptStr(#O,A#) is FormalConcept of C by A93,CONLAT_1:31;
    then A = (ObjectDerivation(C)).(the Extent of a@) by A137,CONLAT_1:def 10
      .= the Intent of a@ by CONLAT_1:def 10;
    hence thesis by A138,A139,A137,CONLAT_1:def 21;
  end;
A140: for a,b being Element of L holds a [= b implies fi.a [= fi.b
  proof
    let a,b be Element of L;
    set ca = fi.a, cb = fi.b;
    assume
A141: a [= b;
A142: {o where o is Object of C : g.o [= a} c= {o where o is Object of C :
    g.o [= b}
    proof
      let x be object;
      assume x in {o where o is Object of C : g.o [= a};
      then consider x9 being Object of C such that
A143: x9 = x and
A144: g.x9 [= a;
      g.x9 [= b by A141,A144,LATTICES:7;
      hence thesis by A143;
    end;
A145: dom fi = the carrier of L by FUNCT_2:def 1;
    then consider ya being object such that
A146: [a,ya] in fi by XTUPLE_0:def 12;
    consider yb being object such that
A147: [b,yb] in fi by A145,XTUPLE_0:def 12;
    consider xb being Element of L, Ob being Subset of the carrier of C, Ab
    being Subset of the carrier' of C such that
A148: [b,yb] = [xb,ConceptStr(#Ob,Ab#)] and
A149: Ob = {o where o is Object of C : g.o [= xb} and
    Ab = {a9 where a9 is Attribute of C : xb [= d.a9} by A147;
A150: b = [b,yb]`1
      .= [xb,ConceptStr(#Ob,Ab#)]`1 by A148
      .= xb;
    then fi.b = ConceptStr(#Ob,Ab#) by A147,A148,FUNCT_1:1;
    then
A151: the Extent of cb@ = Ob by CONLAT_1:def 21;
    consider xa being Element of L, Oa being Subset of the carrier of C, Aa
    being Subset of the carrier' of C such that
A152: [a,ya] = [xa,ConceptStr(#Oa,Aa#)] and
A153: Oa = {o where o is Object of C : g.o [= xa} and
    Aa = {a9 where a9 is Attribute of C : xa [= d.a9} by A146;
A154: a = [a,ya]`1
      .= [xa,ConceptStr(#Oa,Aa#)]`1 by A152
      .= xa;
    then fi.a = ConceptStr(#Oa,Aa#) by A146,A152,FUNCT_1:1;
    then the Extent of ca@ = Oa by CONLAT_1:def 21;
    then ca@ is-SubConcept-of cb@ by A142,A153,A149,A154,A150,A151,
CONLAT_1:def 16;
    hence thesis by CONLAT_1:43;
  end;
A155: for a,b being Element of ConceptLattice(C) holds f.a [= f.b implies a
  [= b
  proof
    let a,b be Element of ConceptLattice(C);
    assume
A156: f.a [= f.b;
    fi.(f.a) = a & fi.(f.b) = b by A127;
    hence thesis by A140,A156;
  end;
  for a,b being Element of ConceptLattice(C) holds a [= b implies f.a [= f.b
  proof
    let a,b be Element of ConceptLattice(C);
    reconsider xa = "\/"({g.o where o is Object of C : o in the Extent of a@},
    L), xb = "\/"({g.o where o is Object of C : o in the Extent of b@},L) as
    Element of L;
    [a@,xa] in f;
    then
A157: f.(a@) = xa by FUNCT_1:1;
    [b@,xb] in f;
    then
A158: f.(b@) = xb by FUNCT_1:1;
    assume a [= b;
    then a@ is-SubConcept-of b@ by CONLAT_1:43;
    then
A159: the Extent of a@ c= the Extent of b@ by CONLAT_1:def 16;
A160: {g.o where o is Object of C : o in the Extent of a@} c= {g.o where o
    is Object of C : o in the Extent of b@}
    proof
      let x be object;
      assume x in {g.o where o is Object of C : o in the Extent of a@};
      then ex o being Object of C st x = g.o & o in the Extent of a @;
      hence thesis by A159;
    end;
    a@ = a & b@ = b by CONLAT_1:def 21;
    hence thesis by A160,A157,A158,LATTICE3:45;
  end;
  then reconsider f as Homomorphism of ConceptLattice(C),L by A155,A108,Lm1,Lm2
;
A161: f is onto by A108,FUNCT_2:def 3;
  f is one-to-one by A155,Lm1;
  hence thesis by A161,LATTICE4:def 3;
end;
