let L be 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 ex 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
for a being Attribute of holds
( o is-connected-with a iff g . o [= d . a ) ) ) )
let C be FormalContext; ( ConceptLattice C,L are_isomorphic iff ex g being Function of the carrier of C,the carrier of L ex 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
for a being Attribute of holds
( o is-connected-with a iff g . o [= d . a ) ) ) )
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
for a being Attribute of holds
( o is-connected-with a iff g . o [= d . a )
; ConceptLattice C,L are_isomorphic
set fi = { [x,ConceptStr(# O,A #)] where x is Element of , O is Subset of , A is Subset of : ( O = { o where o is Object of : g . o [= x } & A = { a where a is Attribute of : x [= d . a } ) } ;
set f = { [ConceptStr(# O,A #),x] where O is Subset of , A is Subset of , x is Element of : ( ConceptStr(# O,A #) is FormalConcept of & x = "\/" { (g . o) where o is Object of : o in O } ,L ) } ;
A36:
ConceptLattice C = LattStr(# (B-carrier C),(B-join C),(B-meet C) #)
by CONLAT_1:def 23;
A37:
{ [ConceptStr(# O,A #),x] where O is Subset of , A is Subset of , x is Element of : ( ConceptStr(# O,A #) is FormalConcept of & x = "\/" { (g . o) where o is Object of : o in O } ,L ) } c= [:the carrier of (ConceptLattice C),the carrier of L:]
proof
let y be
set ;
TARSKI:def 3 ( not y in { [ConceptStr(# O,A #),x] where O is Subset of , A is Subset of , x is Element of : ( ConceptStr(# O,A #) is FormalConcept of & x = "\/" { (g . o) where o is Object of : o in O } ,L ) } or y in [:the carrier of (ConceptLattice C),the carrier of L:] )
assume
y in { [ConceptStr(# O,A #),x] where O is Subset of , A is Subset of , x is Element of : ( ConceptStr(# O,A #) is FormalConcept of & x = "\/" { (g . o) where o is Object of : o in O } ,L ) }
;
y in [:the carrier of (ConceptLattice C),the carrier of L:]
then consider O being
Subset of ,
A being
Subset of ,
x being
Element of
such that A38:
y = [ConceptStr(# O,A #),x]
and A39:
ConceptStr(#
O,
A #) is
FormalConcept of
and
x = "\/" { (g . o) where o is Object of : o in O } ,
L
;
ConceptStr(#
O,
A #)
in the
carrier of
(ConceptLattice C)
by A36, A39, CONLAT_1:35;
hence
y in [:the carrier of (ConceptLattice C),the carrier of L:]
by A38, ZFMISC_1:def 2;
verum
end;
{ [x,ConceptStr(# O,A #)] where x is Element of , O is Subset of , A is Subset of : ( O = { o where o is Object of : g . o [= x } & A = { a where a is Attribute of : x [= d . a } ) } c= [:the carrier of L,the carrier of (ConceptLattice C):]
proof
let y be
set ;
TARSKI:def 3 ( not y in { [x,ConceptStr(# O,A #)] where x is Element of , O is Subset of , A is Subset of : ( O = { o where o is Object of : g . o [= x } & A = { a where a is Attribute of : x [= d . a } ) } or y in [:the carrier of L,the carrier of (ConceptLattice C):] )
assume
y in { [x,ConceptStr(# O,A #)] where x is Element of , O is Subset of , A is Subset of : ( O = { o where o is Object of : g . o [= x } & A = { a where a is Attribute of : x [= d . a } ) }
;
y in [:the carrier of L,the carrier of (ConceptLattice C):]
then consider x being
Element of ,
O being
Subset of ,
A being
Subset of
such that A40:
y = [x,ConceptStr(# O,A #)]
and A41:
O = { o where o is Object of : g . o [= x }
and A42:
A = { a where a is Attribute of : 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 #)
XBOOLE_0:def 10 the Extent of ConceptStr(# O,A #) c= (AttributeDerivation C) . the Intent of ConceptStr(# O,A #)proof
let u be
set ;
TARSKI:def 3 ( not u in (AttributeDerivation C) . the Intent of ConceptStr(# O,A #) or u in the Extent of ConceptStr(# O,A #) )
A44:
"/\" { (d . a') where a' is Attribute of : x [= d . a' } ,
L = x
assume
u in (AttributeDerivation C) . the
Intent of
ConceptStr(#
O,
A #)
;
u in the Extent of ConceptStr(# O,A #)
then
u in { o where o is Object of : for a being Attribute of st a in the Intent of ConceptStr(# O,A #) holds
o is-connected-with a }
by CONLAT_1:def 7;
then consider u' being
Object of
such that A51:
u' = u
and A52:
for
a being
Attribute of st
a in the
Intent of
ConceptStr(#
O,
A #) holds
u' is-connected-with a
;
A53:
for
v being
Attribute of st
v in { a where a is Attribute of : x [= d . a } holds
g . u' [= d . v
g . u' is_less_than { (d . a) where a is Attribute of : x [= d . a }
then
g . u' [= x
by A44, LATTICE3:34;
hence
u in the
Extent of
ConceptStr(#
O,
A #)
by A41, A51;
verum
end;
let u be
set ;
TARSKI:def 3 ( not u in the Extent of ConceptStr(# O,A #) or u in (AttributeDerivation C) . the Intent of ConceptStr(# O,A #) )
assume
u in the
Extent of
ConceptStr(#
O,
A #)
;
u in (AttributeDerivation C) . the Intent of ConceptStr(# O,A #)
then consider u' being
Object of
such that A56:
u' = u
and A57:
g . u' [= x
by A41;
A58:
for
v being
Attribute of st
v in { a where a is Attribute of : x [= d . a } holds
g . u' [= d . v
for
v being
Attribute of st
v in { a where a is Attribute of : x [= d . a } holds
u' is-connected-with v
then
u' in { o where o is Object of : for a being Attribute of st a in the Intent of ConceptStr(# O,A #) holds
o is-connected-with a }
by A42;
hence
u in (AttributeDerivation C) . the
Intent of
ConceptStr(#
O,
A #)
by A56, CONLAT_1:def 7;
verum
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 #)
XBOOLE_0:def 10 the Intent of ConceptStr(# O,A #) c= (ObjectDerivation C) . the Extent of ConceptStr(# O,A #)proof
let u be
set ;
TARSKI:def 3 ( not u in (ObjectDerivation C) . the Extent of ConceptStr(# O,A #) or u in the Intent of ConceptStr(# O,A #) )
A59:
"\/" { (g . a') where a' is Object of : g . a' [= x } ,
L = x
assume
u in (ObjectDerivation C) . the
Extent of
ConceptStr(#
O,
A #)
;
u in the Intent of ConceptStr(# O,A #)
then
u in { o where o is Attribute of : for a being Object of st a in the Extent of ConceptStr(# O,A #) holds
a is-connected-with o }
by CONLAT_1:def 6;
then consider u' being
Attribute of
such that A66:
u' = u
and A67:
for
a being
Object of st
a in the
Extent of
ConceptStr(#
O,
A #) holds
a is-connected-with u'
;
A68:
for
v being
Object of st
v in { a where a is Object of : g . a [= x } holds
g . v [= d . u'
{ (g . a) where a is Object of : g . a [= x } is_less_than d . u'
then
x [= d . u'
by A59, LATTICE3:def 21;
hence
u in the
Intent of
ConceptStr(#
O,
A #)
by A42, A66;
verum
end;
let u be
set ;
TARSKI:def 3 ( not u in the Intent of ConceptStr(# O,A #) or u in (ObjectDerivation C) . the Extent of ConceptStr(# O,A #) )
assume
u in the
Intent of
ConceptStr(#
O,
A #)
;
u in (ObjectDerivation C) . the Extent of ConceptStr(# O,A #)
then consider u' being
Attribute of
such that A71:
u' = u
and A72:
x [= d . u'
by A42;
A73:
for
v being
Object of st
v in { a where a is Object of : g . a [= x } holds
g . v [= d . u'
for
v being
Object of st
v in { a where a is Object of : g . a [= x } holds
v is-connected-with u'
then
u' in { o where o is Attribute of : for a being Object of st a in the Extent of ConceptStr(# O,A #) holds
a is-connected-with o }
by A41;
hence
u in (ObjectDerivation C) . the
Extent of
ConceptStr(#
O,
A #)
by A71, CONLAT_1:def 6;
verum
end;
then
ConceptStr(#
O,
A #) is
FormalConcept of
by A43, Lm3, CONLAT_1:def 13;
then
ConceptStr(#
O,
A #)
in the
carrier of
(ConceptLattice C)
by A36, CONLAT_1:35;
hence
y in [:the carrier of L,the carrier of (ConceptLattice C):]
by A40, ZFMISC_1:def 2;
verum
end;
then reconsider fi = { [x,ConceptStr(# O,A #)] where x is Element of , O is Subset of , A is Subset of : ( O = { o where o is Object of : g . o [= x } & A = { a where a is Attribute of : x [= d . a } ) } as Relation of , ;
A74:
for x, y1, y2 being set st [x,y1] in fi & [x,y2] in fi holds
y1 = y2
proof
let x,
y1,
y2 be
set ;
( [x,y1] in fi & [x,y2] in fi implies y1 = y2 )
assume that A75:
[x,y1] in fi
and A76:
[x,y2] in fi
;
y1 = y2
consider z being
Element of ,
O being
Subset of ,
A being
Subset of
such that A77:
[x,y1] = [z,ConceptStr(# O,A #)]
and A78:
(
O = { o where o is Object of : g . o [= z } &
A = { a where a is Attribute of : z [= d . a } )
by A75;
consider z' being
Element of ,
O' being
Subset of ,
A' being
Subset of
such that A79:
[x,y2] = [z',ConceptStr(# O',A' #)]
and A80:
(
O' = { o where o is Object of : g . o [= z' } &
A' = { a where a is Attribute of : z' [= d . a } )
by A76;
z =
[x,y1] `1
by A77, MCART_1:def 1
.=
x
by MCART_1:def 1
.=
[x,y2] `1
by MCART_1:def 1
.=
z'
by A79, MCART_1:def 1
;
hence y1 =
[x,y2] `2
by A77, A78, A79, A80, MCART_1:def 2
.=
y2
by MCART_1:def 2
;
verum
end;
the carrier of L c= dom fi
then A81:
the carrier of L = dom fi
by XBOOLE_0:def 10;
reconsider f = { [ConceptStr(# O,A #),x] where O is Subset of , A is Subset of , x is Element of : ( ConceptStr(# O,A #) is FormalConcept of & x = "\/" { (g . o) where o is Object of : o in O } ,L ) } as Relation of , by A37;
the carrier of (ConceptLattice C) c= dom f
then A84:
the carrier of (ConceptLattice C) = dom f
by XBOOLE_0:def 10;
reconsider fi = fi as Function of the carrier of L,the carrier of (ConceptLattice C) by A81, A74, FUNCT_1:def 1, FUNCT_2:def 1;
for x, y1, y2 being set st [x,y1] in f & [x,y2] in f holds
y1 = y2
proof
let x,
y1,
y2 be
set ;
( [x,y1] in f & [x,y2] in f implies y1 = y2 )
assume that A85:
[x,y1] in f
and A86:
[x,y2] in f
;
y1 = y2
consider O being
Subset of ,
A being
Subset of ,
z being
Element of
such that A87:
[x,y1] = [ConceptStr(# O,A #),z]
and
ConceptStr(#
O,
A #) is
FormalConcept of
and A88:
z = "\/" { (g . o) where o is Object of : o in O } ,
L
by A85;
consider O' being
Subset of ,
A' being
Subset of ,
z' being
Element of
such that A89:
[x,y2] = [ConceptStr(# O',A' #),z']
and
ConceptStr(#
O',
A' #) is
FormalConcept of
and A90:
z' = "\/" { (g . o) where o is Object of : o in O' } ,
L
by A86;
ConceptStr(#
O,
A #) =
[x,y1] `1
by A87, MCART_1:def 1
.=
x
by MCART_1:def 1
.=
[x,y2] `1
by MCART_1:def 1
.=
ConceptStr(#
O',
A' #)
by A89, MCART_1:def 1
;
hence y1 =
[x,y2] `2
by A87, A88, A89, A90, MCART_1:def 2
.=
y2
by MCART_1:def 2
;
verum
end;
then reconsider f = f as Function of the carrier of (ConceptLattice C),the carrier of L by A84, FUNCT_1:def 1, FUNCT_2:def 1;
A91:
ConceptLattice C = LattStr(# (B-carrier C),(B-join C),(B-meet C) #)
by CONLAT_1:def 23;
A92:
for a being Element of holds f . (fi . a) = a
proof
let a be
Element of ;
f . (fi . a) = a
reconsider a =
a as
Element of ;
set A =
{ a' where a' is Attribute of : a [= d . a' } ;
{ a' where a' is Attribute of : a [= d . a' } c= the
carrier' of
C
then reconsider A =
{ a' where a' is Attribute of : a [= d . a' } as
Subset of ;
set O =
{ o where o is Object of : g . o [= a } ;
{ o where o is Object of : g . o [= a } c= the
carrier of
C
then reconsider O =
{ o where o is Object of : g . o [= a } as
Subset of ;
set b =
"\/" { (g . o) where o is Object of : o in the Extent of ConceptStr(# O,A #) } ,
L;
A93:
"\/" { (g . o) where o is Object of : o in { o' where o' is Object of : g . o' [= a } } ,
L = a
A102:
[a,ConceptStr(# O,A #)] in fi
;
then
ConceptStr(#
O,
A #)
in rng fi
by RELAT_1:def 5;
then
ConceptStr(#
O,
A #) is
FormalConcept of
by A91, CONLAT_1:35;
then
[ConceptStr(# O,A #),("\/" { (g . o) where o is Object of : o in the Extent of ConceptStr(# O,A #) } ,L)] in f
;
then
f . ConceptStr(#
O,
A #)
= "\/" { (g . o) where o is Object of : o in the Extent of ConceptStr(# O,A #) } ,
L
by FUNCT_1:8;
hence
f . (fi . a) = a
by A102, A93, FUNCT_1:8;
verum
end;
the carrier of L c= rng f
then A106:
rng f = the carrier of L
by XBOOLE_0:def 10;
A107:
for x being Element of holds f . x = "/\" { (d . a) where a is Attribute of : a in the Intent of (x @ ) } ,L
proof
let x be
Element of ;
f . x = "/\" { (d . a) where a is Attribute of : a in the Intent of (x @ ) } ,L
set y =
"\/" { (g . o) where o is Object of : o in the Extent of (x @ ) } ,
L;
A108:
[(x @ ),("\/" { (g . o) where o is Object of : o in the Extent of (x @ ) } ,L)] in f
;
A109:
for
o being
set st
o in { (d . a') where a' is Attribute of : "\/" { (g . o) where o is Object of : o in the Extent of (x @ ) } ,L [= d . a' } holds
o in { (d . a) where a is Attribute of : a in the Intent of (x @ ) }
A113:
for
o' being
Object of st
o' in the
Extent of
(x @ ) holds
for
a' being
Attribute of st
a' in the
Intent of
(x @ ) holds
g . o' [= d . a'
A115:
for
o being
set st
o in { (d . a) where a is Attribute of : a in the Intent of (x @ ) } holds
o in { (d . a') where a' is Attribute of : "\/" { (g . o) where o is Object of : o in the Extent of (x @ ) } ,L [= d . a' }
A118:
"/\" { (d . a') where a' is Attribute of : "\/" { (g . o) where o is Object of : o in the Extent of (x @ ) } ,L [= d . a' } ,
L = "\/" { (g . o) where o is Object of : o in the Extent of (x @ ) } ,
L
proof
consider D being
Subset of
such that A119:
"/\" D,
L = "\/" { (g . o) where o is Object of : o in the Extent of (x @ ) } ,
L
by A34, LATTICE6:def 14;
A120:
"\/" { (g . o) where o is Object of : o in the Extent of (x @ ) } ,
L is_less_than D
by A119, LATTICE3:34;
D c= { (d . a') where a' is Attribute of : "\/" { (g . o) where o is Object of : o in the Extent of (x @ ) } ,L [= d . a' }
then A124:
"/\" { (d . a') where a' is Attribute of : "\/" { (g . o) where o is Object of : o in the Extent of (x @ ) } ,L [= d . a' } ,
L [= "\/" { (g . o) where o is Object of : o in the Extent of (x @ ) } ,
L
by A119, LATTICE3:46;
"\/" { (g . o) where o is Object of : o in the Extent of (x @ ) } ,
L is_less_than { (d . a') where a' is Attribute of : "\/" { (g . o) where o is Object of : o in the Extent of (x @ ) } ,L [= d . a' }
then
"\/" { (g . o) where o is Object of : o in the Extent of (x @ ) } ,
L [= "/\" { (d . a') where a' is Attribute of : "\/" { (g . o) where o is Object of : o in the Extent of (x @ ) } ,L [= d . a' } ,
L
by LATTICE3:40;
hence
"/\" { (d . a') where a' is Attribute of : "\/" { (g . o) where o is Object of : o in the Extent of (x @ ) } ,L [= d . a' } ,
L = "\/" { (g . o) where o is Object of : o in the Extent of (x @ ) } ,
L
by A124, LATTICES:26;
verum
end;
f . x =
f . (x @ )
by CONLAT_1:def 24
.=
"\/" { (g . o) where o is Object of : o in the Extent of (x @ ) } ,
L
by A108, FUNCT_1:8
;
hence
f . x = "/\" { (d . a) where a is Attribute of : a in the Intent of (x @ ) } ,
L
by A109, A115, A118, TARSKI:2;
verum
end;
A125:
for a being Element of holds fi . (f . a) = a
proof
let a be
Element of ;
fi . (f . a) = a
set x =
"/\" { (d . u) where u is Attribute of : u in the Intent of (a @ ) } ,
L;
set A =
{ a' where a' is Attribute of : "/\" { (d . u) where u is Attribute of : u in the Intent of (a @ ) } ,L [= d . a' } ;
{ a' where a' is Attribute of : "/\" { (d . u) where u is Attribute of : u in the Intent of (a @ ) } ,L [= d . a' } c= the
carrier' of
C
then reconsider A =
{ a' where a' is Attribute of : "/\" { (d . u) where u is Attribute of : u in the Intent of (a @ ) } ,L [= d . a' } as
Subset of ;
set O =
{ o where o is Object of : g . o [= "/\" { (d . u) where u is Attribute of : u in the Intent of (a @ ) } ,L } ;
{ o where o is Object of : g . o [= "/\" { (d . u) where u is Attribute of : u in the Intent of (a @ ) } ,L } c= the
carrier of
C
then reconsider O =
{ o where o is Object of : g . o [= "/\" { (d . u) where u is Attribute of : u in the Intent of (a @ ) } ,L } as
Subset of ;
A126:
O = { o where o is Object of : for a' being Attribute of st a' in the Intent of (a @ ) holds
g . o [= d . a' }
{ o where o is Object of : for a' being Attribute of st a' in the Intent of (a @ ) holds
g . o [= d . a' } = { o where o is Object of : for a' being Attribute of st a' in the Intent of (a @ ) holds
o is-connected-with a' }
then A135:
O =
(AttributeDerivation C) . the
Intent of
(a @ )
by A126, CONLAT_1:def 7
.=
the
Extent of
(a @ )
by CONLAT_1:def 13
;
A136:
fi . ("/\" { (d . u) where u is Attribute of : u in the Intent of (a @ ) } ,L) = fi . (f . a)
by A107;
[("/\" { (d . u) where u is Attribute of : u in the Intent of (a @ ) } ,L),ConceptStr(# O,A #)] in fi
;
then A137:
fi . ("/\" { (d . u) where u is Attribute of : u in the Intent of (a @ ) } ,L) = ConceptStr(#
O,
A #)
by FUNCT_1:8;
then
ConceptStr(#
O,
A #) is
FormalConcept of
by A91, CONLAT_1:35;
then A =
(ObjectDerivation C) . the
Extent of
(a @ )
by A135, CONLAT_1:def 13
.=
the
Intent of
(a @ )
by CONLAT_1:def 13
;
hence
fi . (f . a) = a
by A136, A137, A135, CONLAT_1:def 24;
verum
end;
A138:
for a, b being Element of st a [= b holds
fi . a [= fi . b
proof
let a,
b be
Element of ;
( a [= b implies fi . a [= fi . b )
set ca =
fi . a;
set cb =
fi . b;
assume A139:
a [= b
;
fi . a [= fi . b
A140:
{ o where o is Object of : g . o [= a } c= { o where o is Object of : g . o [= b }
A143:
dom fi = the
carrier of
L
by FUNCT_2:def 1;
then consider ya being
set such that A144:
[a,ya] in fi
by RELAT_1:def 4;
consider yb being
set such that A145:
[b,yb] in fi
by A143, RELAT_1:def 4;
consider xb being
Element of ,
Ob being
Subset of ,
Ab being
Subset of
such that A146:
[b,yb] = [xb,ConceptStr(# Ob,Ab #)]
and A147:
Ob = { o where o is Object of : g . o [= xb }
and
Ab = { a' where a' is Attribute of : xb [= d . a' }
by A145;
A148:
b =
[xb,ConceptStr(# Ob,Ab #)] `1
by A146, MCART_1:def 1
.=
xb
by MCART_1:def 1
;
then
fi . b = ConceptStr(#
Ob,
Ab #)
by A145, A146, FUNCT_1:8;
then A149:
the
Extent of
((fi . b) @ ) = Ob
by CONLAT_1:def 24;
consider xa being
Element of ,
Oa being
Subset of ,
Aa being
Subset of
such that A150:
[a,ya] = [xa,ConceptStr(# Oa,Aa #)]
and A151:
Oa = { o where o is Object of : g . o [= xa }
and
Aa = { a' where a' is Attribute of : xa [= d . a' }
by A144;
A152:
a =
[xa,ConceptStr(# Oa,Aa #)] `1
by A150, MCART_1:def 1
.=
xa
by MCART_1:def 1
;
then
fi . a = ConceptStr(#
Oa,
Aa #)
by A144, A150, FUNCT_1:8;
then
the
Extent of
((fi . a) @ ) = Oa
by CONLAT_1:def 24;
then
(fi . a) @ is-SubConcept-of (fi . b) @
by A140, A151, A147, A152, A148, A149, CONLAT_1:def 19;
hence
fi . a [= fi . b
by CONLAT_1:47;
verum
end;
A153:
for a, b being Element of st f . a [= f . b holds
a [= b
for a, b being Element of st a [= b holds
f . a [= f . b
then reconsider f = f as Homomorphism of ConceptLattice C,L by A153, A106, Lm1, Lm2;
A159:
f is onto
by A106, FUNCT_2:def 3;
f is one-to-one
by A153, Lm1;
hence
ConceptLattice C,L are_isomorphic
by A159, LATTICE4:def 5; verum