:: A Characterization of Concept Lattices; Dual Concept Lattices
:: by Christoph Schwarzweller
::
:: Received August 17, 1999
:: Copyright (c) 1999-2019 Association of Mizar Users
:: (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland).
:: This code can be distributed under the GNU General Public Licence
:: version 3.0 or later, or the Creative Commons Attribution-ShareAlike
:: License version 3.0 or later, subject to the binding interpretation
:: detailed in file COPYING.interpretation.
:: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these
:: licenses, or see http://www.gnu.org/licenses/gpl.html and
:: http://creativecommons.org/licenses/by-sa/3.0/.
environ
vocabularies CONLAT_1, STRUCT_0, QC_LANG1, SUBSET_1, LATTICES, XXREAL_2,
PBOOLE, EQREL_1, XBOOLE_0, SETFAM_1, FUNCT_1, TARSKI, CAT_1, LATTICE3,
ZFMISC_1, RELAT_1, FUNCT_3, LATTICE6, REWRITE1, GROUP_6, WELLORD1,
FUNCT_2, MCART_1, FILTER_1, XXREAL_0, ORDERS_2, CONLAT_2, LATTICE4;
notations TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, SETFAM_1, XTUPLE_0, MCART_1,
FUNCT_1, DOMAIN_1, RELSET_1, ORDERS_2, STRUCT_0, LATTICE2, LATTICE3,
LATTICE6, PARTFUN1, FUNCT_2, LATTICES, LATTICE4, CONLAT_1;
constructors DOMAIN_1, LATTICE2, LATTICE4, CONLAT_1, LATTICE6, RELSET_1,
XTUPLE_0;
registrations SUBSET_1, FUNCT_1, FUNCT_2, STRUCT_0, LATTICES, LATTICE2,
LATTICE3, CONLAT_1, RELSET_1, XTUPLE_0;
requirements SUBSET, BOOLE;
definitions TARSKI, LATTICE3, VECTSP_8, LATTICE6, FUNCT_1, XBOOLE_0;
equalities LATTICE3, XBOOLE_0, SUBSET_1;
expansions LATTICE3, LATTICE6, FUNCT_1, XBOOLE_0;
theorems TARSKI, RELAT_1, FUNCT_1, ZFMISC_1, LATTICE4, LATTICES, LATTICE3,
SETFAM_1, FUNCT_2, FILTER_1, LATTICE2, ORDERS_2, CONLAT_1, XTUPLE_0;
schemes FUNCT_2;
begin
definition
let C be FormalContext;
let CP be strict FormalConcept of C;
func @CP -> Element of ConceptLattice(C) equals
CP;
coherence
proof
ConceptLattice(C) = LattStr(#B-carrier(C),B-join(C),B-meet(C)#) by
CONLAT_1:def 20;
hence thesis by CONLAT_1:31;
end;
end;
registration
let C be FormalContext;
cluster ConceptLattice C -> bounded;
coherence
proof
A1: (@Concept-with-all-Objects(C))@ = Concept-with-all-Objects(C) by
CONLAT_1:def 21;
A2: for a being Element of ConceptLattice(C) holds a [= @
Concept-with-all-Objects(C)
proof
let a be Element of ConceptLattice(C);
a@ is-SubConcept-of (@Concept-with-all-Objects(C))@ by A1,CONLAT_1:30;
hence thesis by CONLAT_1:43;
end;
for a being Element of ConceptLattice(C) holds @
Concept-with-all-Objects(C) "\/" a = @Concept-with-all-Objects(C) & a "\/" @
Concept-with-all-Objects(C) = @Concept-with-all-Objects(C)
by A2,LATTICES:def 3;
then
A3: ConceptLattice C is upper-bounded by LATTICES:def 14;
A4: (@Concept-with-all-Attributes(C))@ = Concept-with-all-Attributes(C) by
CONLAT_1:def 21;
A5: for a being Element of ConceptLattice(C) holds @
Concept-with-all-Attributes(C) [= a
proof
let a be Element of ConceptLattice(C);
(@Concept-with-all-Attributes(C))@ is-SubConcept-of a@ by A4,CONLAT_1:30;
hence thesis by CONLAT_1:43;
end;
for a being Element of ConceptLattice(C) holds @
Concept-with-all-Attributes(C) "/\" a = @Concept-with-all-Attributes(C) & a
"/\" @Concept-with-all-Attributes(C) = @Concept-with-all-Attributes(C)
by A5,LATTICES:4;
then ConceptLattice C is lower-bounded by LATTICES:def 13;
hence thesis by A3;
end;
end;
theorem Th1:
for C being FormalContext holds Bottom (ConceptLattice(C)) =
Concept-with-all-Attributes(C) & Top (ConceptLattice(C)) =
Concept-with-all-Objects(C)
proof
let C be FormalContext;
A1: (@Concept-with-all-Objects(C))@ = Concept-with-all-Objects(C) by
CONLAT_1:def 21;
A2: for a being Element of ConceptLattice(C) holds a [= @
Concept-with-all-Objects(C)
proof
let a be Element of ConceptLattice(C);
a@ is-SubConcept-of (@Concept-with-all-Objects(C))@ by A1,CONLAT_1:30;
hence thesis by CONLAT_1:43;
end;
A3: for a being Element of ConceptLattice(C) holds @Concept-with-all-Objects
(C) "\/" a = @Concept-with-all-Objects(C) & a "\/" @Concept-with-all-Objects(C)
= @Concept-with-all-Objects(C) by A2,LATTICES:def 3;
A4: (@Concept-with-all-Attributes(C))@ = Concept-with-all-Attributes(C) by
CONLAT_1:def 21;
A5: for a being Element of ConceptLattice(C) holds @
Concept-with-all-Attributes(C) [= a
proof
let a be Element of ConceptLattice(C);
(@Concept-with-all-Attributes(C))@ is-SubConcept-of a@ by A4,CONLAT_1:30;
hence thesis by CONLAT_1:43;
end;
for a being Element of ConceptLattice(C) holds @
Concept-with-all-Attributes(C) "/\" a = @Concept-with-all-Attributes(C) & a
"/\" @Concept-with-all-Attributes(C) = @Concept-with-all-Attributes(C)
by A5,LATTICES:4;
hence thesis by A3,LATTICES:def 16,def 17;
end;
theorem Th2:
for C being FormalContext for D being non empty Subset-Family of
the carrier of C holds (ObjectDerivation(C)).(union D) = meet({(
ObjectDerivation(C)).O where O is Subset of the carrier of C : O in D})
proof
let C be FormalContext;
let D be non empty Subset-Family of(the carrier of C);
reconsider D9=D as non empty Subset-Family of the carrier of C;
set OU = (ObjectDerivation(C)).(union D);
set M = meet({(ObjectDerivation(C)).O where O is Subset of the carrier of C
: O in D});
per cases;
suppose
A1: {(ObjectDerivation(C)).O where O is Subset of the carrier of C : O
in D} <> {};
thus OU c= M
proof
let x be object;
assume x in OU;
then x in {a9 where a9 is Attribute of C : for o being Object of C st o
in union D9 holds o is-connected-with a9} by CONLAT_1:def 3;
then
A2: ex x9 being Attribute of C st x9 = x & for o being Object of C st o
in union D holds o is-connected-with x9;
then reconsider x as Attribute of C;
A3: for O being Subset of the carrier of C st O in D for o being Object
of C st o in O holds o is-connected-with x
proof
let O be Subset of the carrier of C;
assume
A4: O in D;
let o be Object of C;
assume o in O;
then o in union D by A4,TARSKI:def 4;
hence thesis by A2;
end;
A5: for O being Subset of the carrier of C st O in D holds x in (
ObjectDerivation(C)).O
proof
let O be Subset of the carrier of C;
assume O in D;
then for o being Object of C st o in O holds o is-connected-with x by
A3;
then x in {a where a is Attribute of C : for o being Object of C st o
in O holds o is-connected-with a };
hence thesis by CONLAT_1:def 3;
end;
for Y being set holds Y in {(ObjectDerivation(C)).O where O is
Subset of the carrier of C : O in D} implies x in Y
proof
let Y be set;
assume Y in {(ObjectDerivation(C)).O where O is Subset of the
carrier of C : O in D};
then
ex O being Subset of the carrier of C st Y = ( ObjectDerivation(C)
).O & O in D;
hence thesis by A5;
end;
hence thesis by A1,SETFAM_1:def 1;
end;
thus M c= OU
proof
set d = the Element of {(ObjectDerivation(C)).O where O is Subset of the
carrier of C : O in D};
let x be object;
assume
A6: x in M;
then
A7: x in d by A1,SETFAM_1:def 1;
d in {(ObjectDerivation(C)).O where O is Subset of the carrier of C
: O in D} by A1;
then
ex X being Subset of the carrier of C st d = ( ObjectDerivation(C)).
X & X in D;
then reconsider x as Attribute of C by A7;
A8: for O being Subset of the carrier of C st O in D holds x in (
ObjectDerivation(C)).O
proof
let O be Subset of the carrier of C;
assume O in D;
then (ObjectDerivation(C)).O in {(ObjectDerivation(C)).O9 where O9 is
Subset of the carrier of C : O9 in D};
hence thesis by A6,SETFAM_1:def 1;
end;
A9: for O being Subset of the carrier of C st O in D for o being Object
of C st o in O holds o is-connected-with x
proof
let O be Subset of the carrier of C;
assume O in D;
then x in (ObjectDerivation(C)).O by A8;
then x in {a where a is Attribute of C : for o being Object of C st o
in O holds o is-connected-with a} by CONLAT_1:def 3;
then
A10: ex x9 being Attribute of C st x9 = x & for o being Object of C st
o in O holds o is-connected-with x9;
let o be Object of C;
assume o in O;
hence thesis by A10;
end;
for o being Object of C st o in union D holds o is-connected-with x
proof
let o be Object of C;
assume o in union D;
then ex Y being set st o in Y & Y in D by TARSKI:def 4;
hence thesis by A9;
end;
then x in {a9 where a9 is Attribute of C : for o being Object of C st o
in union D9 holds o is-connected-with a9};
hence thesis by CONLAT_1:def 3;
end;
end;
suppose
A11: {(ObjectDerivation(C)).O where O is Subset of the carrier of C :
O in D} = {};
D = {}
proof
set x = the Element of D;
assume D <> {};
(ObjectDerivation(C)).x in {(ObjectDerivation(C)).O where O is
Subset of the carrier of C : O in D};
hence thesis by A11;
end;
hence thesis;
end;
end;
theorem Th3:
for C being FormalContext for D being non empty Subset-Family of(
the carrier' of C) holds (AttributeDerivation(C)).(union D) = meet({(
AttributeDerivation(C)).A where A is Subset of the carrier' of C : A in D})
proof
let C be FormalContext;
let D be non empty Subset-Family of(the carrier' of C);
reconsider D9=D as non empty Subset-Family of the carrier' of C;
set OU = (AttributeDerivation(C)).(union D);
set M = meet({(AttributeDerivation(C)).A where A is Subset of the carrier'
of C : A in D});
now
per cases;
case
A1: {(AttributeDerivation(C)).A where A is Subset of the carrier' of
C: A in D} <> {};
thus OU = M
proof
thus OU c= M
proof
let x be object;
assume x in OU;
then
x in {o9 where o9 is Object of C : for a being Attribute of C st
a in union D9 holds o9 is-connected-with a} by CONLAT_1:def 4;
then
A2: ex x9 being Object of C st x9 = x & for a being Attribute of C st
a in union D holds x9 is-connected-with a;
then reconsider x as Object of C;
A3: for A being Subset of the carrier' of C st A in D for a being
Attribute of C st a in A holds x is-connected-with a
proof
let A be Subset of the carrier' of C;
assume
A4: A in D;
let a be Attribute of C;
assume a in A;
then a in union D by A4,TARSKI:def 4;
hence thesis by A2;
end;
A5: for A being Subset of the carrier' of C st A in D holds x in (
AttributeDerivation(C)).A
proof
let A be Subset of the carrier' of C;
assume A in D;
then for a being Attribute of C st a in A holds x
is-connected-with a by A3;
then x in {o where o is Object of C : for a being Attribute of C
st a in A holds o is-connected-with a};
hence thesis by CONLAT_1:def 4;
end;
for Y being set holds Y in {(AttributeDerivation(C)).A where A
is Subset of the carrier' of C : A in D} implies x in Y
proof
let Y be set;
assume Y in {(AttributeDerivation(C)).A where A is Subset of the
carrier' of C : A in D};
then ex A being Subset of the carrier' of C st Y = (
AttributeDerivation(C)).A & A in D;
hence thesis by A5;
end;
hence thesis by A1,SETFAM_1:def 1;
end;
set d = the Element of {(AttributeDerivation(C)).A where A is Subset of the
carrier' of C : A in D};
let x be object;
assume
A6: x in M;
then
A7: x in d by A1,SETFAM_1:def 1;
d in {(AttributeDerivation(C)).A where A is Subset of the
carrier' of C : A in D} by A1;
then ex X being Subset of the carrier' of C st d = (
AttributeDerivation(C)).X & X in D;
then reconsider x as Object of C by A7;
A8: for A being Subset of the carrier' of C st A in D holds x in (
AttributeDerivation(C)).A
proof
let A be Subset of the carrier' of C;
assume A in D;
then (AttributeDerivation(C)).A in {(AttributeDerivation(C)).A9
where A9 is Subset of the carrier' of C : A9 in D};
hence thesis by A6,SETFAM_1:def 1;
end;
A9: for A being Subset of the carrier' of C st A in D for a being
Attribute of C st a in A holds x is-connected-with a
proof
let A be Subset of the carrier' of C;
assume A in D;
then x in (AttributeDerivation(C)).A by A8;
then x in {o where o is Object of C : for a being Attribute of C st
a in A holds o is-connected-with a} by CONLAT_1:def 4;
then
A10: ex x9 being Object of C st x9 = x & for a being Attribute of C
st a in A holds x9 is-connected-with a;
let a be Attribute of C;
assume a in A;
hence thesis by A10;
end;
for a being Attribute of C st a in union D holds x is-connected-with a
proof
let a be Attribute of C;
assume a in union D;
then ex Y being set st a in Y & Y in D by TARSKI:def 4;
hence thesis by A9;
end;
then x in {o9 where o9 is Object of C : for a being Attribute of C st
a in union D9 holds o9 is-connected-with a};
hence thesis by CONLAT_1:def 4;
end;
end;
case
A11: {(AttributeDerivation(C)).A where A is Subset of the carrier'
of C : A in D} = {};
D = {}
proof
set x = the Element of D;
assume D <> {};
(AttributeDerivation(C)).x in {(AttributeDerivation(C)).A where A
is Subset of the carrier' of C : A in D};
hence thesis by A11;
end;
hence thesis;
end;
end;
hence thesis;
end;
theorem Th4:
for C being FormalContext for D being Subset of ConceptLattice(C)
holds "/\"(D,ConceptLattice(C)) is FormalConcept of C & "\/"(D,ConceptLattice(C
)) is FormalConcept of C
proof
let C be FormalContext;
let D be Subset of ConceptLattice(C);
ConceptLattice(C) = LattStr(#B-carrier(C),B-join(C),B-meet(C)#) by
CONLAT_1:def 20;
hence thesis by CONLAT_1:31;
end;
definition
let C be FormalContext;
let D be Subset of ConceptLattice(C);
func "/\"(D,C) -> FormalConcept of C equals
"/\"(D,ConceptLattice(C));
coherence by Th4;
func "\/"(D,C) -> FormalConcept of C equals
"\/"(D,ConceptLattice(C));
coherence by Th4;
end;
theorem
for C being FormalContext holds "\/"({} ConceptLattice(C),C) =
Concept-with-all-Attributes(C) & "/\"({} ConceptLattice(C),C) =
Concept-with-all-Objects(C)
proof
let C be FormalContext;
A1: for b being Element of ConceptLattice(C) st b is_less_than {} holds b [=
@Concept-with-all-Objects(C)
proof
let b be Element of ConceptLattice(C);
assume b is_less_than {};
b@ is-SubConcept-of Concept-with-all-Objects(C) &
Concept-with-all-Objects(C ) = (@Concept-with-all-Objects(C))@ by CONLAT_1:30
,def 21;
hence thesis by CONLAT_1:43;
end;
"\/"({} ConceptLattice(C),C) = Bottom ConceptLattice(C) & @
Concept-with-all-Objects(C) is_less_than {} by LATTICE3:49;
hence thesis by A1,Th1,LATTICE3:34;
end;
theorem
for C being FormalContext holds "\/"([#] the carrier of ConceptLattice
(C),C) = Concept-with-all-Objects(C) & "/\"([#] the carrier of ConceptLattice(C
),C) = Concept-with-all-Attributes(C)
proof
let C be FormalContext;
A1: @Concept-with-all-Attributes(C) is_less_than [#] the carrier of
ConceptLattice(C)
proof
let q be Element of ConceptLattice(C);
assume q in [#] the carrier of ConceptLattice(C);
Concept-with-all-Attributes(C) is-SubConcept-of q@ &
Concept-with-all-Attributes(C) = (@Concept-with-all-Attributes(C))@ by
CONLAT_1:30,def 21;
hence thesis by CONLAT_1:43;
end;
"\/"(the carrier of ConceptLattice(C),ConceptLattice(C)) = Top
ConceptLattice (C) & for b being Element of ConceptLattice(C) st b is_less_than
[#] the carrier of ConceptLattice(C) holds b [= @Concept-with-all-Attributes(C)
by LATTICE3:50;
hence thesis by A1,Th1,LATTICE3:34;
end;
theorem
for C being FormalContext for D being non empty Subset of
ConceptLattice(C) holds the Extent of "\/"(D,C) = (AttributeDerivation(C)).((
ObjectDerivation(C)). union {the Extent of ConceptStr(#E,I#) where E is Subset
of the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D}
) & the Intent of "\/"(D,C) = meet {the Intent of ConceptStr(#E,I#) where E is
Subset of the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I
#) in D}
proof
let C be FormalContext;
let D be non empty Subset of ConceptLattice(C);
set O = (AttributeDerivation(C)).((ObjectDerivation(C)). union {the Extent
of ConceptStr(#E,I#) where E is Subset of the carrier of C, I is Subset of the
carrier' of C : ConceptStr(#E,I#) in D});
set A9 = (ObjectDerivation(C)). union {the Extent of ConceptStr(#E,I#) where
E is Subset of the carrier of C, I is Subset of the carrier' of C : ConceptStr
(#E,I#) in D};
set y = the Element of D;
{the Extent of ConceptStr(#E,I#) where E is Subset of the carrier of C,
I is Subset of the carrier' of C : ConceptStr(#E,I#) in D} c= bool (the carrier
of C)
proof
let x be object;
assume x in {the Extent of ConceptStr(#E,I#) where E is Subset of the
carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D};
then ex E being Subset of the carrier of C, I being Subset of the carrier'
of C st x = the Extent of ConceptStr(#E,I#) & ConceptStr(#E,I#) in D;
hence thesis;
end;
then reconsider
OO = {the Extent of ConceptStr(#E,I#) where E is Subset of the
carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D} as
Subset-Family of (the carrier of C);
O c= the carrier of C
proof
set u = union {the Extent of ConceptStr(#E,I#) where E is Subset of the
carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D};
u c= the carrier of C
proof
let x be object;
assume x in u;
then consider Y being set such that
A1: x in Y and
A2: Y in {the Extent of ConceptStr(#E,I#) where E is Subset of the
carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D} by
TARSKI:def 4;
ex E being Subset of the carrier of C, I being Subset of the
carrier' of C st Y = the Extent of ConceptStr(#E,I#) & ConceptStr(#E,I#) in D
by A2;
hence thesis by A1;
end;
then reconsider u as Subset of the carrier of C;
let x be object;
A3: (AttributeDerivation(C)).((ObjectDerivation(C)).u) is Element of bool
(the carrier of C);
assume x in O;
hence thesis by A3;
end;
then reconsider o = O as Subset of the carrier of C;
A4: ConceptLattice(C) = LattStr(#B-carrier(C),B-join(C),B-meet(C)#) by
CONLAT_1:def 20;
A5: for x being object
holds x in D implies x is strict FormalConcept of C & ex
E being Subset of the carrier of C, I being Subset of the carrier' of C st x =
ConceptStr(#E,I#)
proof
let x be object;
assume x in D;
then x is strict FormalConcept of C by A4,CONLAT_1:31;
hence thesis;
end;
then ex E9 being Subset of the carrier of C, I9 being Subset of the carrier'
of C st y = ConceptStr(#E9,I9#);
then
the Extent of y in {the Extent of ConceptStr(#E,I#) where E is Subset of
the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D};
then reconsider OO as non empty Subset-Family of (the carrier of C);
A6: {the Intent of ConceptStr(#E,I#) where E is Subset of the carrier of C,
I is Subset of the carrier' of C : ConceptStr(#E,I#) in D} c= {(
ObjectDerivation(C)).O9 where O9 is Subset of the carrier of C : O9 in {the
Extent of ConceptStr(#E,I#) where E is Subset of the carrier of C, I is Subset
of the carrier' of C : ConceptStr(#E,I#) in D}}
proof
let x be object;
assume x in {the Intent of ConceptStr(#E,I#) where E is Subset of the
carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D};
then consider E being Subset of the carrier of C, I being Subset of the
carrier' of C such that
A7: x = the Intent of ConceptStr(#E,I#) and
A8: ConceptStr(#E,I#) in D;
ConceptStr(#E,I#) is FormalConcept of C by A5,A8;
then
A9: x = (ObjectDerivation(C)).(the Extent of ConceptStr(#E,I#)) by A7,
CONLAT_1:def 10;
the Extent of ConceptStr(#E,I#) in {the Extent of ConceptStr(#EE,II
#) where EE is Subset of the carrier of C, II is Subset of the carrier' of C :
ConceptStr(#EE,II#) in D} by A8;
hence thesis by A9;
end;
{(ObjectDerivation(C)).O9 where O9 is Subset of the carrier of C : O9
in {the Extent of ConceptStr(#E,I#) where E is Subset of the carrier of C, I is
Subset of the carrier' of C : ConceptStr(#E,I#) in D}} c= {the Intent of
ConceptStr(#E,I#) where E is Subset of the carrier of C, I is Subset of the
carrier' of C : ConceptStr(#E,I#) in D}
proof
let x be object;
assume x in {(ObjectDerivation(C)).O9 where O9 is Subset of the carrier
of C : O9 in {the Extent of ConceptStr(#E,I#) where E is Subset of the carrier
of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D}};
then consider O9 being Subset of the carrier of C such that
A10: x = (ObjectDerivation(C)).O9 and
A11: O9 in {the Extent of ConceptStr(#E,I#) where E is Subset of the
carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D};
consider E being Subset of the carrier of C, I being Subset of the
carrier' of C such that
A12: O9 = the Extent of ConceptStr(#E,I#) and
A13: ConceptStr(#E,I#) in D by A11;
ConceptStr(#E,I#) is FormalConcept of C by A5,A13;
then x = the Intent of ConceptStr(#E,I#) by A10,A12,CONLAT_1:def 10;
hence thesis by A13;
end;
then
A14: {(ObjectDerivation(C)).O9 where O9 is Subset of the carrier of C : O9
in { the Extent of ConceptStr(#E,I#) where E is Subset of the carrier of C, I
is Subset of the carrier' of C : ConceptStr(#E,I#) in D}} = {the Intent of
ConceptStr(#E,I#) where E is Subset of the carrier of C, I is Subset of the
carrier' of C : ConceptStr(#E,I#) in D} by A6;
A15: A9 = meet({(ObjectDerivation(C)).O9 where O9 is Subset of the carrier
of C : O9 in OO}) by Th2;
A9 c= the carrier' of C
proof
set y = the Element of D;
set Y = the Element of {the Intent of ConceptStr(#E,I#) where E is Subset of
the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I #) in D};
let x be object;
ex E9 being Subset of the carrier of C, I9 being Subset of the
carrier' of C st y = ConceptStr(#E9,I9#) by A5;
then
A16: the Intent of y in {the Intent of ConceptStr(#E,I#) where E is Subset
of the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D}
;
then Y in {the Intent of ConceptStr(#E,I#) where E is Subset of the
carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D};
then
A17: ex E1 being Subset of the carrier of C, I1 being Subset of the
carrier' of C st Y = the Intent of ConceptStr(#E1,I1#) & ConceptStr(#E1, I1#)
in D;
assume x in A9;
then x in Y by A15,A14,A16,SETFAM_1:def 1;
hence thesis by A17;
end;
then reconsider a = A9 as Subset of the carrier' of C;
union {the Extent of ConceptStr(#E,I#) where E is Subset of the carrier
of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D} c= the carrier
of C
proof
let x be object;
assume x in union {the Extent of ConceptStr(#E,I#) where E is Subset of
the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D};
then consider Y being set such that
A18: x in Y and
A19: Y in {the Extent of ConceptStr(#E,I#) where E is Subset of the
carrier of C,I is Subset of the carrier' of C : ConceptStr(#E,I#) in D} by
TARSKI:def 4;
ex E being Subset of the carrier of C, I being Subset of the carrier'
of C st Y = the Extent of ConceptStr(#E,I#) & ConceptStr(#E,I#) in D by A19;
hence thesis by A18;
end;
then reconsider CP9 = ConceptStr(#o,a#) as strict FormalConcept of C by
CONLAT_1:19;
reconsider CP = CP9 as Element of ConceptLattice(C) by A4,CONLAT_1:31;
A20: the Intent of CP@ = meet {the Intent of ConceptStr(#E,I#) where E is
Subset of the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I
#) in D} by A15,A14,CONLAT_1:def 21;
A21: for r being Element of ConceptLattice(C) st D is_less_than r holds CP [= r
proof
let r be Element of ConceptLattice(C);
assume
A22: D is_less_than r;
A23: for q being Element of ConceptLattice(C) st q in D holds the Intent
of r@ c= the Intent of q@
proof
let q be Element of ConceptLattice(C);
assume q in D;
then q [= r by A22;
then q@ is-SubConcept-of r@ by CONLAT_1:43;
hence thesis by CONLAT_1:28;
end;
the Intent of r@ c= meet {the Intent of ConceptStr(#E,I#) where E is
Subset of the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I
#) in D}
proof
set y = the Element of D;
let x be object;
assume
A24: x in the Intent of r@;
A25: for Y being set holds Y in {the Intent of ConceptStr(#E,I#) where E
is Subset of the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E
,I#) in D} implies x in Y
proof
let Y be set;
assume Y in {the Intent of ConceptStr(#E,I#) where E is Subset of
the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D};
then consider
Ey being Subset of the carrier of C, Iy being Subset of the
carrier' of C such that
A26: Y = the Intent of ConceptStr(#Ey,Iy#) and
A27: ConceptStr(#Ey,Iy#) in D;
reconsider C1 = ConceptStr(#Ey,Iy#) as Element of ConceptLattice(C) by
A27;
the Intent of r@ c= the Intent of C1@ by A23,A27;
then x in the Intent of C1@ by A24;
hence thesis by A26,CONLAT_1:def 21;
end;
ex E9 being Subset of the carrier of C, I9 being Subset of the
carrier' of C st y = ConceptStr(#E9,I9#) by A5;
then the Intent of y in {the Intent of ConceptStr(#E,I#) where E is
Subset of the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I
#) in D};
hence thesis by A25,SETFAM_1:def 1;
end;
then CP@ is-SubConcept-of r@ by A20,CONLAT_1:28;
hence thesis by CONLAT_1:43;
end;
D is_less_than CP
proof
let q be Element of ConceptLattice(C);
assume q in D;
then q@ in D by CONLAT_1:def 21;
then the Intent of q@ in {the Intent of ConceptStr(#E,I#) where E is
Subset of the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I
#) in D};
then the Intent of CP@ c= the Intent of q@ by A20,SETFAM_1:3;
then q@ is-SubConcept-of CP@ by CONLAT_1:28;
hence thesis by CONLAT_1:43;
end;
hence thesis by A15,A14,A21,LATTICE3:def 21;
end;
theorem
for C being FormalContext for D being non empty Subset of
ConceptLattice(C) holds the Extent of "/\"(D,C) = meet {the Extent of
ConceptStr(#E,I#) where E is Subset of the carrier of C, I is Subset of the
carrier' of C : ConceptStr(#E,I#) in D} & the Intent of "/\"(D,C) = (
ObjectDerivation(C)).((AttributeDerivation(C)). union {the Intent of ConceptStr
(#E,I#) where E is Subset of the carrier of C, I is Subset of the carrier' of C
: ConceptStr(#E,I#) in D})
proof
let C be FormalContext;
let D be non empty Subset of ConceptLattice(C);
set A = (ObjectDerivation(C)).((AttributeDerivation(C)). union {the Intent
of ConceptStr(#E,I#) where E is Subset of the carrier of C, I is Subset of the
carrier' of C : ConceptStr(#E,I#) in D});
set O9 = (AttributeDerivation(C)). union {the Intent of ConceptStr(#E,I#)
where E is Subset of the carrier of C, I is Subset of the carrier' of C :
ConceptStr(#E,I#) in D};
set y = the Element of D;
{the Intent of ConceptStr(#E,I#) where E is Subset of the carrier of C,
I is Subset of the carrier' of C : ConceptStr(#E,I#) in D} c= bool (the
carrier' of C)
proof
let x be object;
assume x in {the Intent of ConceptStr(#E,I#) where E is Subset of the
carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D};
then ex E being Subset of the carrier of C, I being Subset of the carrier'
of C st x = the Intent of ConceptStr(#E,I#) & ConceptStr(#E,I#) in D;
hence thesis;
end;
then reconsider
AA = {the Intent of ConceptStr(#E,I#) where E is Subset of the
carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D} as
Subset-Family of (the carrier' of C);
A c= the carrier' of C
proof
set u = union {the Intent of ConceptStr(#E,I#) where E is Subset of the
carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D};
u c= the carrier' of C
proof
let x be object;
assume x in u;
then consider Y being set such that
A1: x in Y and
A2: Y in {the Intent of ConceptStr(#E,I#) where E is Subset of the
carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D} by
TARSKI:def 4;
ex E being Subset of the carrier of C, I being Subset of the
carrier' of C st Y = the Intent of ConceptStr(#E,I#) & ConceptStr(#E,I#) in D
by A2;
hence thesis by A1;
end;
then reconsider u as Subset of the carrier' of C;
let x be object;
A3: (ObjectDerivation(C)).((AttributeDerivation(C)).u) is Element of bool
(the carrier' of C);
assume x in A;
hence thesis by A3;
end;
then reconsider a = A as Subset of the carrier' of C;
A4: ConceptLattice(C) = LattStr(#B-carrier(C),B-join(C),B-meet(C)#) by
CONLAT_1:def 20;
A5: for x being object
holds x in D implies x is strict FormalConcept of C & ex
E being Subset of the carrier of C, I being Subset of the carrier' of C st x =
ConceptStr(#E,I#)
proof
let x be object;
assume x in D;
then x is strict FormalConcept of C by A4,CONLAT_1:31;
hence thesis;
end;
then ex E9 being Subset of the carrier of C, I9 being Subset of the carrier'
of C st y = ConceptStr(#E9,I9#);
then
the Intent of y in {the Intent of ConceptStr(#E,I#) where E is Subset of
the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D};
then reconsider AA as non empty Subset-Family of (the carrier' of C);
A6: {the Extent of ConceptStr(#E,I#) where E is Subset of the carrier of C,
I is Subset of the carrier' of C : ConceptStr(#E,I#) in D} c= {(
AttributeDerivation(C)).A9 where A9 is Subset of the carrier' of C : A9 in {the
Intent of ConceptStr(#E,I#) where E is Subset of the carrier of C, I is Subset
of the carrier' of C : ConceptStr(#E,I#) in D}}
proof
let x be object;
assume x in {the Extent of ConceptStr(#E,I#) where E is Subset of the
carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D};
then consider E being Subset of the carrier of C, I being Subset of the
carrier' of C such that
A7: x = the Extent of ConceptStr(#E,I#) and
A8: ConceptStr(#E,I#) in D;
ConceptStr(#E,I#) is FormalConcept of C by A5,A8;
then
A9: x = (AttributeDerivation(C)).(the Intent of ConceptStr(#E,I#)) by A7,
CONLAT_1:def 10;
the Intent of ConceptStr(#E,I#) in {the Intent of ConceptStr(#EE,II#)
where EE is Subset of the carrier of C, II is Subset of the carrier' of C :
ConceptStr(#EE,II#) in D} by A8;
hence thesis by A9;
end;
{(AttributeDerivation(C)).A9 where A9 is Subset of the carrier' of C :
A9 in {the Intent of ConceptStr(#E,I#) where E is Subset of the carrier of C, I
is Subset of the carrier' of C : ConceptStr(#E,I#) in D}} c= {the Extent of
ConceptStr(#E,I#) where E is Subset of the carrier of C, I is Subset of the
carrier' of C : ConceptStr(#E,I#) in D}
proof
let x be object;
assume x in {(AttributeDerivation(C)).A9 where A9 is Subset of the
carrier' of C : A9 in {the Intent of ConceptStr(#E,I#) where E is Subset of the
carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D}};
then consider A9 being Subset of the carrier' of C such that
A10: x = (AttributeDerivation(C)).A9 and
A11: A9 in {the Intent of ConceptStr(#E,I#) where E is Subset of the
carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D};
consider E being Subset of the carrier of C, I being Subset of the
carrier' of C such that
A12: A9 = the Intent of ConceptStr(#E,I#) and
A13: ConceptStr(#E,I#) in D by A11;
ConceptStr(#E,I#) is FormalConcept of C by A5,A13;
then x = the Extent of ConceptStr(#E,I#) by A10,A12,CONLAT_1:def 10;
hence thesis by A13;
end;
then
A14: {(AttributeDerivation(C)).A9 where A9 is Subset of the carrier' of C :
A9 in {the Intent of ConceptStr(#E,I#) where E is Subset of the carrier of C, I
is Subset of the carrier' of C : ConceptStr(#E,I#) in D}} = {the Extent of
ConceptStr(#E,I#) where E is Subset of the carrier of C, I is Subset of the
carrier' of C : ConceptStr(#E,I#) in D} by A6;
A15: O9 = meet({(AttributeDerivation(C)).A9 where A9 is Subset of the
carrier' of C : A9 in AA}) by Th3;
O9 c= the carrier of C
proof
set y = the Element of D;
set Y = the Element of {the Extent of ConceptStr(#E,I#) where E is Subset of
the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I #) in D};
let x be object;
ex E9 being Subset of the carrier of C, I9 being Subset of the
carrier' of C st y = ConceptStr(#E9,I9#) by A5;
then
A16: the Extent of y in {the Extent of ConceptStr(#E,I#) where E is Subset
of the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D}
;
then Y in {the Extent of ConceptStr(#E,I#) where E is Subset of the
carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D};
then
A17: ex E1 being Subset of the carrier of C, I1 being Subset of the
carrier' of C st Y = the Extent of ConceptStr(#E1,I1#) & ConceptStr(#E1, I1#)
in D;
assume x in O9;
then x in Y by A15,A14,A16,SETFAM_1:def 1;
hence thesis by A17;
end;
then reconsider o = O9 as Subset of the carrier of C;
union {the Intent of ConceptStr(#E,I#) where E is Subset of the carrier
of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D} c= the
carrier' of C
proof
let x be object;
assume x in union {the Intent of ConceptStr(#E,I#) where E is Subset of
the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D};
then consider Y being set such that
A18: x in Y and
A19: Y in {the Intent of ConceptStr(#E,I#) where E is Subset of the
carrier of C,I is Subset of the carrier' of C : ConceptStr(#E,I#) in D} by
TARSKI:def 4;
ex E being Subset of the carrier of C, I being Subset of the carrier'
of C st Y = the Intent of ConceptStr(#E,I#) & ConceptStr(#E,I#) in D by A19;
hence thesis by A18;
end;
then reconsider CP9 = ConceptStr(#o,a#) as strict FormalConcept of C by
CONLAT_1:21;
reconsider CP = CP9 as Element of ConceptLattice(C) by A4,CONLAT_1:31;
A20: the Extent of CP@ = meet {the Extent of ConceptStr(#E,I#) where E is
Subset of the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I
#) in D} by A15,A14,CONLAT_1:def 21;
A21: for r being Element of ConceptLattice(C) st r is_less_than D holds r [= CP
proof
let r be Element of ConceptLattice(C);
assume
A22: r is_less_than D;
A23: for q being Element of ConceptLattice(C) st q in D holds the Extent
of r@ c= the Extent of q@
proof
let q be Element of ConceptLattice(C);
assume q in D;
then r [= q by A22;
then r@ is-SubConcept-of q@ by CONLAT_1:43;
hence thesis by CONLAT_1:def 16;
end;
the Extent of r@ c= meet {the Extent of ConceptStr(#E,I#) where E is
Subset of the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I
#) in D}
proof
set y = the Element of D;
let x be object;
assume
A24: x in the Extent of r@;
A25: for Y being set holds Y in {the Extent of ConceptStr(#E,I#) where E
is Subset of the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E
,I#) in D} implies x in Y
proof
let Y be set;
assume Y in {the Extent of ConceptStr(#E,I#) where E is Subset of
the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I#) in D};
then consider
Ey being Subset of the carrier of C, Iy being Subset of the
carrier' of C such that
A26: Y = the Extent of ConceptStr(#Ey,Iy#) and
A27: ConceptStr(#Ey,Iy#) in D;
reconsider C1 = ConceptStr(#Ey,Iy#) as Element of ConceptLattice(C) by
A27;
the Extent of r@ c= the Extent of C1@ by A23,A27;
then x in the Extent of C1@ by A24;
hence thesis by A26,CONLAT_1:def 21;
end;
ex E9 being Subset of the carrier of C, I9 being Subset of the
carrier' of C st y = ConceptStr(#E9,I9#) by A5;
then the Extent of y in {the Extent of ConceptStr(#E,I#) where E is
Subset of the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I
#) in D};
hence thesis by A25,SETFAM_1:def 1;
end;
then r@ is-SubConcept-of CP@ by A20,CONLAT_1:def 16;
hence thesis by CONLAT_1:43;
end;
CP is_less_than D
proof
let q be Element of ConceptLattice(C);
assume q in D;
then q@ in D by CONLAT_1:def 21;
then the Extent of q@ in {the Extent of ConceptStr(#E,I#) where E is
Subset of the carrier of C, I is Subset of the carrier' of C : ConceptStr(#E,I
#) in D};
then the Extent of CP@ c= the Extent of q@ by A20,SETFAM_1:3;
then CP@ is-SubConcept-of q@ by CONLAT_1:def 16;
hence thesis by CONLAT_1:43;
end;
hence thesis by A15,A14,A21,LATTICE3:34;
end;
theorem Th9:
for C being FormalContext for CP being strict FormalConcept of C
holds "\/"({ConceptStr(#O,A#) where O is Subset of the carrier of C, A is
Subset of the carrier' of C : ex o being Object of C st o in the Extent of CP &
O = (AttributeDerivation(C)).((ObjectDerivation(C)).{o}) & A = (
ObjectDerivation(C)).{o}}, ConceptLattice(C)) = CP
proof
let C be FormalContext;
let CP be strict FormalConcept of C;
set D = {ConceptStr(#O,A#) where O is Subset of the carrier of C, A is
Subset of the carrier' of C : ex o being Object of C st o in the Extent of CP &
O = (AttributeDerivation(C)).((ObjectDerivation(C)).{o}) & A = (
ObjectDerivation(C)).{o}};
A1: for CP9 being Element of ConceptLattice(C) st D is_less_than CP9 holds
@CP [= CP9
proof
let CP9 be Element of ConceptLattice(C);
assume
A2: D is_less_than CP9;
A3: the Extent of CP c= the Extent of (CP9)@
proof
let x be object;
assume
A4: x in the Extent of CP;
then reconsider x as Element of C;
set Ax = (ObjectDerivation(C)).{x};
set Ox = (AttributeDerivation(C)).((ObjectDerivation(C)).{x});
reconsider Cx = ConceptStr(#Ox,Ax#) as strict FormalConcept of C by
CONLAT_1:19;
Cx in {ConceptStr(#O,A#) where O is Subset of the carrier of C, A
is Subset of the carrier' of C : ex o being Object of C st o in the Extent of
CP & O = (AttributeDerivation(C)).((ObjectDerivation(C)).{o}) & A = (
ObjectDerivation(C)).{o}} by A4;
then @Cx [= CP9 by A2;
then
A5: (@Cx)@ is-SubConcept-of (CP9)@ by CONLAT_1:43;
{x} c= Ox by CONLAT_1:5;
then
A6: x in the Extent of Cx by ZFMISC_1:31;
Cx = (@Cx)@ by CONLAT_1:def 21;
then the Extent of Cx c= the Extent of (CP9)@ by A5,CONLAT_1:def 16;
hence thesis by A6;
end;
CP = (@CP)@ by CONLAT_1:def 21;
then (@CP)@ is-SubConcept-of (CP9)@ by A3,CONLAT_1:def 16;
hence thesis by CONLAT_1:43;
end;
D is_less_than @CP
proof
let q be Element of ConceptLattice(C);
assume q in D;
then consider O being Subset of the carrier of C, A being Subset of the
carrier' of C such that
A7: q = ConceptStr(#O,A#) and
A8: ex o being Object of C st o in the Extent of CP & O = (
AttributeDerivation(C)).((ObjectDerivation(C)).{o}) & A = (ObjectDerivation(C))
.{o};
consider o being Object of C such that
A9: o in the Extent of CP and
O = (AttributeDerivation(C)).((ObjectDerivation(C)).{o}) and
A10: A = (ObjectDerivation(C)).{o} by A8;
A11: {o} c= the Extent of CP by A9,ZFMISC_1:31;
(ObjectDerivation(C)).(the Extent of CP) = the Intent of CP & the
Intent of q@ = (ObjectDerivation(C)).{o} by A7,A10,CONLAT_1:def 10,def 21;
then the Intent of CP c= the Intent of q@ by A11,CONLAT_1:3;
then
A12: q@ is-SubConcept-of CP by CONLAT_1:28;
CP = (@CP)@ by CONLAT_1:def 21;
hence thesis by A12,CONLAT_1:43;
end;
hence thesis by A1,LATTICE3:def 21;
end;
theorem Th10:
for C being FormalContext for CP being strict FormalConcept of C
holds "/\"({ConceptStr(#O,A#) where O is Subset of the carrier of C, A is
Subset of the carrier' of C : ex a being Attribute of C st a in the Intent of
CP & O = (AttributeDerivation(C)).{a} & A = (ObjectDerivation(C)).((
AttributeDerivation(C)).{a})}, ConceptLattice(C)) = CP
proof
let C be FormalContext;
let CP be strict FormalConcept of C;
set D = {ConceptStr(#O,A#) where O is Subset of the carrier of C, A is
Subset of the carrier' of C : ex a being Attribute of C st a in the Intent of
CP & O = (AttributeDerivation(C)).{a} & A = (ObjectDerivation(C)).((
AttributeDerivation(C)).{a})};
A1: for CP9 being Element of ConceptLattice(C) st CP9 is_less_than D holds
CP9 [= @CP
proof
let CP9 be Element of ConceptLattice(C);
assume
A2: CP9 is_less_than D;
A3: the Intent of CP c= the Intent of (CP9)@
proof
let x be object;
assume
A4: x in the Intent of CP;
then reconsider x as Element of the carrier' of C;
set Ax = (ObjectDerivation(C)).((AttributeDerivation(C)).{x});
set Ox = (AttributeDerivation(C)).{x};
reconsider Cx = ConceptStr(#Ox,Ax#) as strict FormalConcept of C by
CONLAT_1:21;
Cx in {ConceptStr(#O,A#) where O is Subset of the carrier of C, A
is Subset of the carrier' of C : ex a being Attribute of C st a in the Intent
of CP & O = (AttributeDerivation(C)).{a} & A = (ObjectDerivation(C)).((
AttributeDerivation(C)).{a}) } by A4;
then CP9 [= @Cx by A2;
then
A5: (CP9)@ is-SubConcept-of (@Cx)@ by CONLAT_1:43;
{x} c= Ax by CONLAT_1:6;
then
A6: x in the Intent of Cx by ZFMISC_1:31;
Cx = (@Cx)@ by CONLAT_1:def 21;
then the Intent of Cx c= the Intent of (CP9)@ by A5,CONLAT_1:28;
hence thesis by A6;
end;
CP = (@CP)@ by CONLAT_1:def 21;
then (CP9)@ is-SubConcept-of (@CP)@ by A3,CONLAT_1:28;
hence thesis by CONLAT_1:43;
end;
@CP is_less_than D
proof
let q be Element of ConceptLattice(C);
assume q in D;
then consider O being Subset of the carrier of C, A being Subset of the
carrier' of C such that
A7: q = ConceptStr(#O,A#) and
A8: ex a being Attribute of C st a in the Intent of CP & O = (
AttributeDerivation(C)).{a} & A = (ObjectDerivation(C)).((AttributeDerivation(C
)).{a});
consider a being Attribute of C such that
A9: a in the Intent of CP and
A10: O = (AttributeDerivation(C)).{a} and
A = (ObjectDerivation(C)).((AttributeDerivation(C)).{a}) by A8;
A11: {a} c= the Intent of CP by A9,ZFMISC_1:31;
(AttributeDerivation(C)).(the Intent of CP) = the Extent of CP & the
Extent of q@ = (AttributeDerivation(C)).{a} by A7,A10,CONLAT_1:def 10,def 21;
then the Extent of CP c= the Extent of q@ by A11,CONLAT_1:4;
then
A12: CP is-SubConcept-of q@ by CONLAT_1:def 16;
CP = (@CP)@ by CONLAT_1:def 21;
hence thesis by A12,CONLAT_1:43;
end;
hence thesis by A1,LATTICE3:34;
end;
definition
let C be FormalContext;
func gamma(C) -> Function of the carrier of C, the carrier of ConceptLattice
(C) means
:Def4:
for o being Element of C holds ex O being
Subset of the carrier of C, A being Subset of the carrier' of C st it.o =
ConceptStr(#O,A#) & O = (AttributeDerivation(C)).((ObjectDerivation(C)).{o}) &
A = (ObjectDerivation(C)).{o};
existence
proof
defpred P[object, object] means
ex O being Subset of the carrier of C, A being
Subset of the carrier' of C st $2 = ConceptStr(#O,A#) & O = (
AttributeDerivation(C)).((ObjectDerivation(C)).{$1}) & A = (ObjectDerivation(C)
).{$1};
A1: for e being object st e in the carrier of C
ex u being object st u in the carrier of ConceptLattice(C) & P[e,u]
proof
let e be object;
assume e in the carrier of C;
then reconsider se = {e} as Subset of the carrier of C by ZFMISC_1:31;
set A = (ObjectDerivation(C)).se;
set O = (AttributeDerivation(C)).((ObjectDerivation(C)).se);
take ConceptStr(#O,A#);
ConceptLattice(C) = LattStr(#B-carrier(C),B-join(C),B-meet(C)#) &
ConceptStr (#O,A#) is FormalConcept of C by CONLAT_1:19,def 20;
hence thesis by CONLAT_1:31;
end;
consider f being Function of the carrier of C, the carrier of
ConceptLattice(C) such that
A2: for e being object st e in the carrier of C holds P[e,f.e] from
FUNCT_2:sch 1(A1);
take f;
let o be Element of C;
thus thesis by A2;
end;
uniqueness
proof
let F1,F2 be Function of the carrier of C,the carrier of ConceptLattice(C);
assume
A3: for o being Element of C holds ex O being Subset of
the carrier of C, A being Subset of the carrier' of C st F1.o = ConceptStr(#O,A
#) & O = (AttributeDerivation(C)).((ObjectDerivation(C)).{o}) & A = (
ObjectDerivation(C)).{o};
assume
A4: for o being Element of C holds ex O being Subset of
the carrier of C, A being Subset of the carrier' of C st F2.o = ConceptStr(#O,A
#) & O = (AttributeDerivation(C)).((ObjectDerivation(C)).{o}) & A = (
ObjectDerivation(C)).{o};
A5: for o being object st o in the carrier of C holds F1.o = F2.o
proof
let o be object;
assume o in the carrier of C;
then reconsider o as Element of C;
(ex O being Subset of the carrier of C, A being Subset of the
carrier' of C st F1.o = ConceptStr(#O,A#) & O = (AttributeDerivation(C)) .((
ObjectDerivation(C) ).{o}) & A = (ObjectDerivation(C)).{o} )& ex O9 being
Subset of the carrier of C, A9 being Subset of the carrier' of C st F2.o =
ConceptStr(#O9,A9#) & O9 = (AttributeDerivation( C)).((ObjectDerivation(C)).{o}
) & A9 = (ObjectDerivation (C)).{o} by A3,A4;
hence thesis;
end;
dom F1 = the carrier of C & dom F2 = the carrier of C by FUNCT_2:def 1;
hence thesis by A5;
end;
end;
definition
let C be FormalContext;
func delta(C) -> Function of the carrier' of C, the carrier of
ConceptLattice(C) means
:Def5:
for a being Element of the carrier' of C holds
ex O being Subset of the carrier of C, A being Subset of the carrier' of C st
it.a = ConceptStr(#O,A#) & O = (AttributeDerivation(C)).{a} & A = (
ObjectDerivation(C)).((AttributeDerivation(C)).{a});
existence
proof
defpred P[object, object] means
ex O being Subset of the carrier of C, A being
Subset of the carrier' of C st $2 = ConceptStr(#O,A#) & O = (
AttributeDerivation(C)).{$1} & A = (ObjectDerivation(C)).((AttributeDerivation(
C)).{$1});
A1: for e being object st e in the carrier' of C
ex u being object st u in the carrier of ConceptLattice(C) & P[e,u]
proof
let e be object;
assume e in the carrier' of C;
then reconsider se = {e} as Subset of the carrier' of C by ZFMISC_1:31;
set A = (ObjectDerivation(C)).((AttributeDerivation(C)).se);
set O = (AttributeDerivation(C)).se;
take ConceptStr(#O,A#);
ConceptLattice(C) = LattStr(#B-carrier(C),B-join(C),B-meet(C)#) &
ConceptStr (#O,A#) is FormalConcept of C by CONLAT_1:21,def 20;
hence thesis by CONLAT_1:31;
end;
consider f being Function of the carrier' of C, the carrier of
ConceptLattice(C) such that
A2: for e being object st e in the carrier' of C holds P[e,f.e] from
FUNCT_2:sch 1(A1);
take f;
let o be Element of the carrier' of C;
thus thesis by A2;
end;
uniqueness
proof
let F1,F2 be Function of the carrier' of C,the carrier of ConceptLattice(C
);
assume
A3: for a being Element of the carrier' of C holds ex O being Subset
of the carrier of C, A being Subset of the carrier' of C st F1.a = ConceptStr(#
O,A#) & O = (AttributeDerivation(C)).{a} & A = (ObjectDerivation(C)).((
AttributeDerivation(C)).{a});
assume
A4: for a being Element of the carrier' of C holds ex O being Subset
of the carrier of C, A being Subset of the carrier' of C st F2.a = ConceptStr(#
O,A#) & O = (AttributeDerivation(C)).{a} & A = (ObjectDerivation(C)).((
AttributeDerivation(C)).{a});
A5: for a being object st a in the carrier' of C holds F1.a = F2.a
proof
let a be object;
assume a in the carrier' of C;
then reconsider a as Element of the carrier' of C;
(ex O being Subset of the carrier of C, A being Subset of the
carrier' of C st F1.a = ConceptStr(#O,A#) & O = (AttributeDerivation(C)) .{a} &
A = ( ObjectDerivation(C)).((AttributeDerivation(C)).{a}) )& ex O9 being Subset
of the carrier of C, A9 being Subset of the carrier' of C st F2.a = ConceptStr
(# O9,A9#) & O9 = (AttributeDerivation( C)).{a} & A9 = (ObjectDerivation(C)).((
AttributeDerivation(C)).{a}) by A3,A4;
hence thesis;
end;
dom F1 = the carrier' of C & dom F2 = the carrier' of C by FUNCT_2:def 1;
hence thesis by A5;
end;
end;
theorem
for C being FormalContext for o being Object of C for a being
Attribute of C holds (gamma(C)).o is FormalConcept of C & (delta(C)).a is
FormalConcept of C
proof
let C be FormalContext;
let o be Object of C;
let a be Attribute of C;
ConceptLattice(C) = LattStr(#B-carrier(C),B-join(C),B-meet(C)#) by
CONLAT_1:def 20;
hence thesis by CONLAT_1:def 15;
end;
theorem Th12:
for C being FormalContext holds rng(gamma(C)) is supremum-dense
& rng(delta(C)) is infimum-dense
proof
let C be FormalContext;
set G = rng(gamma(C));
thus G is supremum-dense
proof
let a be Element of ConceptLattice(C);
A1: {ConceptStr(#O,A#) where O is Subset of the carrier of C, A is Subset
of the carrier' of C : ex o being Object of C st o in the Extent of a@ & O = (
AttributeDerivation(C)).((ObjectDerivation(C)).{o}) & A = (ObjectDerivation(C))
.{o}} c= G
proof
let x be object;
assume x in {ConceptStr(#O,A#) where O is Subset of the carrier of C, A
is Subset of the carrier' of C : ex o being Object of C st o in the Extent of a
@ & O = (AttributeDerivation(C)).((ObjectDerivation(C)).{o}) & A = (
ObjectDerivation(C)).{o}};
then consider O being Subset of the carrier of C, A being Subset of the
carrier' of C such that
A2: x = ConceptStr(#O,A#) and
A3: ex o being Object of C st o in the Extent of a@ & O = (
AttributeDerivation(C)).((ObjectDerivation(C)).{o}) & A = (ObjectDerivation(C))
.{o};
consider o being Object of C such that
o in the Extent of a@ and
O = (AttributeDerivation(C)).((ObjectDerivation(C)).{o}) and
A4: A = (ObjectDerivation(C)).{o} by A3;
consider y being Element of ConceptLattice(C) such that
A5: (gamma(C)).o = y;
dom(gamma(C)) = the carrier of C & ex O9 being Subset of the carrier
of C, A9 being Subset of the carrier' of C st y = ConceptStr(#O9,A9#) & O9 = (
AttributeDerivation(C)) .((ObjectDerivation(C)).{o}) & A9 = (ObjectDerivation(
C)).{o} by A5,Def4,FUNCT_2:def 1;
hence thesis by A2,A3,A4,A5,FUNCT_1:def 3;
end;
"\/"({ConceptStr(#O,A#) where O is Subset of the carrier of C, A is
Subset of the carrier' of C : ex o being Object of C st o in the Extent of a@ &
O = ( AttributeDerivation(C)).((ObjectDerivation(C)).{o}) & A = (
ObjectDerivation(C)) .{o}}, ConceptLattice(C)) = a@ & a = a@ by Th9,
CONLAT_1:def 21;
hence thesis by A1;
end;
let b be Element of ConceptLattice(C);
set G = rng(delta(C));
A6: {ConceptStr(#O,A#) where O is Subset of the carrier of C, A is Subset of
the carrier' of C : ex a being Attribute of C st a in the Intent of b@ & O = (
AttributeDerivation(C)).{a} & A = (ObjectDerivation(C)).((AttributeDerivation(C
)).{a})} c= G
proof
let x be object;
assume x in {ConceptStr(#O,A#) where O is Subset of the carrier of C, A
is Subset of the carrier' of C : ex a being Attribute of C st a in the Intent
of b@ & O = (AttributeDerivation(C)).{a} & A = (ObjectDerivation(C)).((
AttributeDerivation(C)).{a})};
then consider O being Subset of the carrier of C, A being Subset of the
carrier' of C such that
A7: x = ConceptStr(#O,A#) and
A8: ex a being Attribute of C st a in the Intent of b@ & O = (
AttributeDerivation(C)).{a} & A = (ObjectDerivation(C)).((AttributeDerivation(C
)).{a});
consider a being Attribute of C such that
a in the Intent of b@ and
A9: O = (AttributeDerivation(C)).{a} and
A = (ObjectDerivation(C)).((AttributeDerivation(C)).{a}) by A8;
consider y being Element of ConceptLattice(C) such that
A10: (delta(C)).a = y;
dom(delta(C)) = the carrier' of C & ex O9 being Subset of the carrier
of C, A9 being Subset of the carrier' of C st y = ConceptStr(#O9,A9#) & O9 = (
AttributeDerivation(C)) .{a} & A9 = (ObjectDerivation(C)).((
AttributeDerivation(C)).{a}) by A10,Def5,FUNCT_2:def 1;
hence thesis by A7,A8,A9,A10,FUNCT_1:def 3;
end;
"/\"({ConceptStr(#O,A#) where O is Subset of the carrier of C, A is
Subset of the carrier' of C : ex a being Attribute of C st a in the Intent of b
@ & O = ( AttributeDerivation(C)).{a} & A = (ObjectDerivation(C)).((
AttributeDerivation(C )).{a})}, ConceptLattice(C)) = b@ & b = b@ by Th10,
CONLAT_1:def 21;
hence thesis by A6;
end;
theorem Th13:
for C being FormalContext for o being Object of C for a being
Attribute of C holds o is-connected-with a iff (gamma(C)).o [= (delta(C)).a
proof
let C be FormalContext;
let o be Object of C;
let a be Attribute of C;
set aa = {a};
set o9 = {o};
set oo = (AttributeDerivation(C)).((ObjectDerivation(C)).{o});
consider O being Subset of the carrier of C, A being Subset of the carrier'
of C such that
A1: (gamma(C)).o = ConceptStr(#O,A#) and
A2: O = (AttributeDerivation(C)).((ObjectDerivation(C)).{o}) and
A = (ObjectDerivation(C)).{o} by Def4;
hereby
assume o is-connected-with a;
then a in {a9 where a9 is Attribute of C : o is-connected-with a9};
then a in (ObjectDerivation(C)).({o}) by CONLAT_1:1;
then
A3: {a} c= (ObjectDerivation(C)).({o}) by ZFMISC_1:31;
consider O being Subset of the carrier of C, A being Subset of the
carrier' of C such that
A4: (gamma(C)).o = ConceptStr(#O,A#) and
A5: O = (AttributeDerivation(C)).((ObjectDerivation(C)).{o}) and
A = (ObjectDerivation(C)).{o} by Def4;
consider O9 being Subset of the carrier of C, A9 being Subset of the
carrier' of C such that
A6: (delta(C)).a = ConceptStr(#O9,A9#) and
A7: O9 = (AttributeDerivation(C)).{a} and
A9 = (ObjectDerivation(C)).((AttributeDerivation(C)).{a}) by Def5;
A8: the Extent of ((delta(C)).a)@ = O9 by A6,CONLAT_1:def 21;
the Extent of ((gamma(C)).o)@ = O by A4,CONLAT_1:def 21;
then
the Extent of ((gamma(C)).o)@ c= the Extent of ((delta(C)).a)@ by A3,A5,A7
,A8,CONLAT_1:4;
then ((gamma(C)).o)@ is-SubConcept-of ((delta(C)).a)@ by CONLAT_1:def 16;
hence ((gamma(C)).o) [= ((delta(C)).a) by CONLAT_1:43;
end;
consider O9 being Subset of the carrier of C, A9 being Subset of the
carrier' of C such that
A9: (delta(C)).a = ConceptStr(#O9,A9#) and
A10: O9 = (AttributeDerivation(C)).{a} and
A9 = (ObjectDerivation(C)).((AttributeDerivation(C)).{a}) by Def5;
assume ((gamma(C)).o) [= ((delta(C)).a);
then ((gamma(C)).o)@ is-SubConcept-of ((delta(C)).a)@ by CONLAT_1:43;
then
A11: the Extent of ((gamma(C)).o)@ c= the Extent of ((delta(C)).a)@ by
CONLAT_1:def 16;
the Extent of ((delta(C)).a)@ = O9 by A9,CONLAT_1:def 21;
then O c= O9 by A11,A1,CONLAT_1:def 21;
then aa c= (ObjectDerivation(C)).oo by A2,A10,CONLAT_1:11;
then {a} c= (ObjectDerivation(C)).o9 by CONLAT_1:7;
then a in (ObjectDerivation(C)).({o}) by ZFMISC_1:31;
then a in {a9 where a9 is Attribute of C : o is-connected-with a9} by
CONLAT_1:1;
then ex b being Attribute of C st b = a & o is-connected-with b;
hence thesis;
end;
begin :: The Characterization
Lm1: for L1,L2 being Lattice for f being Function of the carrier of L1, the
carrier of L2 holds (for a,b being Element of L1 holds f.a [= f.b implies a [=
b) implies f is one-to-one
proof
let L1,L2 be Lattice;
let f be Function of the carrier of L1, the carrier of L2;
assume
A1: for a,b being Element of L1 holds f.a [= f.b implies a [= b;
let x,y be object;
assume that
A2: x in dom f and
A3: y in dom f and
A4: f.x = f.y;
reconsider y as Element of L1 by A3;
reconsider x as Element of L1 by A2;
x [= y & y [= x by A1,A4;
hence thesis by LATTICES:8;
end;
Lm2: for L1,L2 being complete Lattice for f being Function of the carrier of
L1, the carrier of L2 st f is one-to-one & rng f = the carrier of L2 holds (for
a,b being Element of L1 holds a [= b iff f.a [= f.b) implies f is Homomorphism
of L1,L2
proof
let L1,L2 be complete Lattice;
let f be Function of the carrier of L1, the carrier of L2;
assume
A1: f is one-to-one & rng f = the carrier of L2;
assume
A2: for a,b being Element of L1 holds a [= b iff f.a [= f.b;
A3: for a,b being Element of L1 holds f.(a "/\" b) = f.a "/\" f.b
proof
let a,b be Element of L1;
a "/\" b [= b by LATTICES:6;
then
A4: f.(a "/\" b) [= f.b by A2;
A5: for r being Element of L2 st r is_less_than {f.a,f.b} holds r [= f.(a
"/\" b)
proof
reconsider g = f" as Function of the carrier of L2, the carrier of L1 by
A1,FUNCT_2:25;
let r be Element of L2;
assume
A6: r is_less_than {f.a,f.b};
A7: f.(g.r) = r by A1,FUNCT_1:35;
f.b in {f.a,f.b} by TARSKI:def 2;
then r [= f.b by A6;
then
A8: g.r [= b by A2,A7;
f.a in {f.a,f.b} by TARSKI:def 2;
then r [= f.a by A6;
then g.r [= a by A2,A7;
then for q being Element of L1 st q in {a,b} holds g.r [= q by A8,
TARSKI:def 2;
then
A9: g.r is_less_than {a,b};
a "/\" b = "/\"{a,b} by LATTICE3:43;
then g.r [= a "/\" b by A9,LATTICE3:34;
hence thesis by A2,A7;
end;
a "/\" b [= a by LATTICES:6;
then f.(a "/\" b) [= f.a by A2;
then for q being Element of L2 st q in {f.a,f.b} holds f.(a "/\" b) [= q
by A4,TARSKI:def 2;
then f.(a "/\" b) is_less_than {f.a,f.b};
then f.(a "/\" b) = "/\"({f.a,f.b},L2) by A5,LATTICE3:34;
hence thesis by LATTICE3:43;
end;
for a,b being Element of L1 holds f.(a "\/" b) = f.a "\/" f.b
proof
let a,b be Element of L1;
b [= a "\/" b by LATTICES:5;
then
A10: f.b [= f.(a "\/" b) by A2;
A11: for r being Element of L2 st {f.a,f.b} is_less_than r holds f.(a "\/"
b) [= r
proof
reconsider g = f" as Function of the carrier of L2, the carrier of L1 by
A1,FUNCT_2:25;
let r be Element of L2;
assume
A12: {f.a,f.b} is_less_than r;
A13: f.(g.r) = r by A1,FUNCT_1:35;
f.b in {f.a,f.b} by TARSKI:def 2;
then f.b [= r by A12;
then
A14: b [= g.r by A2,A13;
f.a in {f.a,f.b} by TARSKI:def 2;
then f.a [= r by A12;
then a [= g.r by A2,A13;
then for q being Element of L1 st q in {a,b} holds q [= g.r by A14,
TARSKI:def 2;
then
A15: {a,b} is_less_than g.r;
a "\/" b = "\/"{a,b} by LATTICE3:43;
then a "\/" b [= g.r by A15,LATTICE3:def 21;
hence thesis by A2,A13;
end;
a [= a "\/" b by LATTICES:5;
then f.a [= f.(a "\/" b) by A2;
then
for q being Element of L2 st q in {f.a,f.b} holds q [= f.(a "\/" b) by A10,
TARSKI:def 2;
then {f.a,f.b} is_less_than f.(a "\/" b);
then f.(a "\/" b) = "\/"({f.a,f.b},L2) by A11,LATTICE3:def 21;
hence thesis by LATTICE3:43;
end;
then f is "\/"-preserving "/\"-preserving by A3,LATTICE4:def 1,def 2;
hence thesis;
end;
Lm3: for C being FormalContext for CS being ConceptStr over C st (
ObjectDerivation(C)).(the Extent of CS) = the Intent of CS holds CS is non
empty
proof
let C be FormalContext;
let CS be ConceptStr over C;
assume
A1: (ObjectDerivation(C)).(the Extent of CS) = the Intent of CS;
per cases;
suppose
the Extent of CS is empty;
then the Intent of CS = the carrier' of C by A1,CONLAT_1:17;
hence thesis by CONLAT_1:def 8;
end;
suppose
the Extent of CS is non empty;
hence thesis by CONLAT_1:def 8;
end;
end;
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;
definition
let L be Lattice;
func Context(L) -> strict non empty non void ContextStr equals
ContextStr(#the
carrier of L, the carrier of L, LattRel L#);
coherence;
end;
theorem Th15:
for L being complete Lattice holds ConceptLattice(Context(L)),L
are_isomorphic
proof
let L be complete Lattice;
reconsider g = id the carrier of L as Function of the carrier of Context(L),
the carrier of L;
reconsider d = id the carrier of L as Function of the carrier' of Context(L)
, the carrier of L;
A1: for o being Object of Context(L), a being Attribute of Context(L) holds
o is-connected-with a iff g.o [= d.a
proof
let o be Object of Context(L), a be Attribute of Context(L);
reconsider o9 = o, a9 = a as Element of L;
o is-connected-with a iff [o,a] in the Information of Context(L) by
CONLAT_1:def 2;
hence thesis by FILTER_1:31;
end;
for a being Element of L holds ex D9 being Subset of rng(d) st a = "/\"(
D9,L)
proof
let a be Element of L;
"/\"({a},L) = a & rng(d) = the carrier of L by LATTICE3:42,RELAT_1:45;
hence thesis;
end;
then
A2: rng(d) is infimum-dense;
rng(g) is supremum-dense
proof
let a be Element of L;
"\/"({a},L) = a & rng(g) = the carrier of L by LATTICE3:42,RELAT_1:45;
hence thesis;
end;
hence thesis by A2,A1,Th14;
end;
theorem
for L being Lattice holds L is complete iff ex C being FormalContext
st ConceptLattice(C),L are_isomorphic
proof
let L be Lattice;
hereby
assume L is complete;
then ConceptLattice(Context(L)),L are_isomorphic by Th15;
hence ex C being FormalContext st ConceptLattice(C),L are_isomorphic;
end;
given C being FormalContext such that
A1: ConceptLattice(C),L are_isomorphic;
let X be Subset of L;
consider f being Homomorphism of L,ConceptLattice(C) such that
A2: f is bijective by A1,LATTICE4:def 3;
set FX = { f.x where x is Element of L : x in X };
FX c= the carrier of ConceptLattice(C)
proof
let x be object;
assume x in FX;
then ex y being Element of L st x = f.y & y in X;
hence thesis;
end;
then reconsider FX as Subset of ConceptLattice(C);
set Fa = "/\"(FX,ConceptLattice(C));
consider a being Element of L such that
A3: Fa = f.a by A2,LATTICE4:6;
A4: for b being Element of L st b is_less_than X holds b [= a
proof
let b be Element of L;
assume
A5: b is_less_than X;
f.b is_less_than FX
proof
let q be Element of ConceptLattice(C);
assume q in FX;
then consider y being Element of L such that
A6: q = f.y and
A7: y in X;
b [= y by A5,A7;
hence thesis by A2,A6,LATTICE4:5;
end;
then f.b [= f.a by A3,LATTICE3:34;
hence thesis by A2,LATTICE4:5;
end;
A8: Fa is_less_than FX by LATTICE3:34;
a is_less_than X
proof
let q be Element of L;
assume q in X;
then f.q in FX;
then Fa [= f.q by A8;
hence thesis by A2,A3,LATTICE4:5;
end;
hence thesis by A4;
end;
begin :: Dual Concept Lattices
registration
let L be complete Lattice;
cluster L.: -> complete;
coherence
proof
let X be Subset of L.:;
A1: L.: = LattStr(#the carrier of L,the L_meet of L, the L_join of L#) by
LATTICE2:def 2;
then reconsider X9 = X as Subset of L;
set a9 = "\/"(X9,L);
reconsider a = a9 as Element of L.: by A1;
LattRel (L.:) = (LattRel L)~ by LATTICE3:20;
then
A2: LattRel (L .: .:) = ((LattRel L)~)~ by LATTICE3:20;
A3: for b being Element of L.: st b is_less_than X holds b [= a
proof
let b be Element of L.:;
reconsider b9 = b as Element of L by A1;
assume
A4: b is_less_than X;
X9 is_less_than b9
proof
let q be Element of L;
reconsider q9 = q as Element of L.: by A1;
assume q in X9;
then b [= q9 by A4;
then b% <= (q9)% by LATTICE3:7;
then [b%,(q9)%] in the InternalRel of LattPOSet L.: by ORDERS_2:def 5;
then [(q9)%,b%] in (the InternalRel of LattPOSet L.:)~ by RELAT_1:def 7
;
then [(q9)%,b%] in the InternalRel of LattPOSet (L .: .:) by
LATTICE3:20;
then q% <= (b9)% by A2,ORDERS_2:def 5;
hence thesis by LATTICE3:7;
end;
then a9 [= b9 by LATTICE3:def 21;
then (a9)% <= (b9)% by LATTICE3:7;
then [(a9)%,(b9)%] in the InternalRel of LattPOSet L by ORDERS_2:def 5;
then [(b9)%,(a9)%] in (the InternalRel of LattPOSet L)~ by RELAT_1:def 7;
then [(b9)%,(a9)%] in the InternalRel of LattPOSet (L.:) by LATTICE3:20;
then b% <= a% by ORDERS_2:def 5;
hence thesis by LATTICE3:7;
end;
A5: X9 is_less_than a9 by LATTICE3:def 21;
a is_less_than X
proof
let q9 be Element of L.:;
reconsider q = q9 as Element of L by A1;
assume q9 in X;
then q [= a9 by A5;
then q% <= (a9)% by LATTICE3:7;
then [q%,(a9)%] in the InternalRel of LattPOSet L by ORDERS_2:def 5;
then [(a9)%,q%] in (the InternalRel of LattPOSet L)~ by RELAT_1:def 7;
then [(a9)%,q%] in the InternalRel of LattPOSet (L.:) by LATTICE3:20;
then a% <= (q9)% by ORDERS_2:def 5;
hence thesis by LATTICE3:7;
end;
hence thesis by A3;
end;
end;
definition
let C be FormalContext;
func C.: -> strict non empty non void ContextStr equals
ContextStr(#the
carrier' of C, the carrier of C, (the Information of C)~ #);
coherence;
end;
theorem
for C being strict FormalContext holds (C.:).: = C;
theorem Th18:
for C being FormalContext for O being Subset of the carrier of C
holds (ObjectDerivation(C)).O = (AttributeDerivation(C.:)).O
proof
let C be FormalContext;
let O be Subset of the carrier of C;
reconsider O9 = O as Subset of(the carrier' of C.:);
set A1 = {a where a is Attribute of C : for o being Object of C st o in O
holds o is-connected-with a };
set A2 = {a where a is Object of C.: : for o being Attribute of C.: st o in
O9 holds a is-connected-with o };
A1: A1 c= A2
proof
let u be object;
assume u in A1;
then consider a being Attribute of C such that
A2: a = u and
A3: for o being Object of C st o in O holds o is-connected-with a;
reconsider u9 = u as Object of C.: by A2;
for o9 being Attribute of C.: st o9 in O9 holds u9 is-connected-with o9
proof
let o9 be Attribute of C.:;
reconsider o = o9 as Object of C;
assume o9 in O9;
then o is-connected-with a by A3;
then [o,a] in the Information of C by CONLAT_1:def 2;
then [a,o] in the Information of C.: by RELAT_1:def 7;
hence thesis by A2,CONLAT_1:def 2;
end;
hence thesis;
end;
A4: A2 c= A1
proof
let u be object;
assume u in A2;
then consider a being Object of C.: such that
A5: a = u and
A6: for o being Attribute of C.: st o in O9 holds a is-connected-with o;
reconsider u9 = u as Attribute of C by A5;
for o being Object of C st o in O holds o is-connected-with u9
proof
let o9 be Object of C;
reconsider o = o9 as Attribute of C.:;
assume o9 in O;
then a is-connected-with o by A6;
then [a,o] in the Information of C.: by CONLAT_1:def 2;
then [o9,u9] in the Information of C by A5,RELAT_1:def 7;
hence thesis by CONLAT_1:def 2;
end;
hence thesis;
end;
(ObjectDerivation(C)).O = {a where a is Attribute of C : for o being
Object of C st o in O holds o is-connected-with a } & (AttributeDerivation(C.:)
).O9 = {a where a is Object of C.: : for o being Attribute of C.: st o in O9
holds a is-connected-with o } by CONLAT_1:def 3,def 4;
hence thesis by A1,A4;
end;
theorem Th19:
for C being FormalContext for A being Subset of the carrier' of
C holds (AttributeDerivation(C)).A = (ObjectDerivation(C.:)).A
proof
let C be FormalContext;
let O be Subset of the carrier' of C;
reconsider O9 = O as Subset of(the carrier of C.:);
set A1 = {a where a is Object of C : for o being Attribute of C st o in O
holds a is-connected-with o };
set A2 = {a where a is Attribute of C.: : for o being Object of C.: st o in
O9 holds o is-connected-with a };
A1: A1 c= A2
proof
let u be object;
assume u in A1;
then consider a being Object of C such that
A2: a = u and
A3: for o being Attribute of C st o in O holds a is-connected-with o;
reconsider u9 = u as Attribute of C.: by A2;
for o being Object of C.: st o in O9 holds o is-connected-with u9
proof
let o9 be Object of C.:;
reconsider o = o9 as Attribute of C;
assume o9 in O9;
then a is-connected-with o by A3;
then [a,o] in the Information of C by CONLAT_1:def 2;
then [o9,u9] in the Information of C.: by A2,RELAT_1:def 7;
hence thesis by CONLAT_1:def 2;
end;
hence thesis;
end;
A4: A2 c= A1
proof
let u be object;
assume u in A2;
then consider a being Attribute of C.: such that
A5: a = u and
A6: for o being Object of C.: st o in O9 holds o is-connected-with a;
reconsider u9 = u as Object of C by A5;
for o being Attribute of C st o in O holds u9 is-connected-with o
proof
let o9 be Attribute of C;
reconsider o = o9 as Object of C.:;
assume o9 in O;
then o is-connected-with a by A6;
then [o,a] in the Information of C.: by CONLAT_1:def 2;
then [u9,o9] in the Information of C by A5,RELAT_1:def 7;
hence thesis by CONLAT_1:def 2;
end;
hence thesis;
end;
(AttributeDerivation(C)).O = {a where a is Object of C : for o being
Attribute of C st o in O holds a is-connected-with o } & (ObjectDerivation(C.:
)).O9 = {a where a is Attribute of C.: : for o being Object of C.: st o in O9
holds o is-connected-with a } by CONLAT_1:def 3,def 4;
hence thesis by A1,A4;
end;
definition
let C be FormalContext;
let CP be ConceptStr over C;
func CP.: -> strict ConceptStr over C.: means
:Def8:
the Extent of it = the Intent of CP & the Intent of it = the Extent of CP;
existence
proof
reconsider O = the Intent of CP as Subset of the carrier of C.:;
reconsider A = the Extent of CP as Subset of the carrier' of C.:;
take ConceptStr(# O,A#);
thus thesis;
end;
uniqueness;
end;
registration
let C be FormalContext;
let CP be FormalConcept of C;
cluster CP.: -> non empty concept-like;
coherence
proof
reconsider O = the Intent of CP as Subset of the carrier of C.:;
reconsider A = the Extent of CP as Subset of the carrier' of C.:;
set CPD = ConceptStr(# O,A#);
A1: (AttributeDerivation(C.:)).(the Intent of CPD) = (ObjectDerivation(C))
.(the Extent of CP) by Th18
.= the Extent of CPD by CONLAT_1:def 10;
A2: CPD = CP.: by Def8;
(ObjectDerivation(C.:)).(the Extent of CPD) = (AttributeDerivation(C))
.(the Intent of CP) by Th19
.= the Intent of CPD by CONLAT_1:def 10;
hence thesis by A1,A2,Lm3,CONLAT_1:def 10;
end;
end;
theorem
for C being strict FormalContext for CP being strict FormalConcept of
C holds (CP.:).: = CP
proof
let C be strict FormalContext;
let CP be strict FormalConcept of C;
A1: the Intent of (CP.:).: = the Extent of CP.: by Def8
.= the Intent of CP by Def8;
the Extent of (CP.:).: = the Intent of CP.: by Def8
.= the Extent of CP by Def8;
hence thesis by A1;
end;
definition
let C be FormalContext;
func DualHomomorphism(C) -> Homomorphism of (ConceptLattice(C)).:,
ConceptLattice(C.:) means
:Def9:
for CP being strict FormalConcept of C holds it.CP = CP.:;
existence
proof
set f = {[ConceptStr(#O,A#),(ConceptStr(#O,A#)).:] where O is Subset of
the carrier of C, A is Subset of the carrier' of C : ConceptStr(#O,A#) is
FormalConcept of C };
A1: ConceptLattice(C.:) = LattStr(#B-carrier(C.:),B-join(C.:),B-meet(C.:)
#) by CONLAT_1:def 20;
A2: ConceptLattice(C) = LattStr(#B-carrier(C),B-join(C),B-meet(C)#) by
CONLAT_1:def 20;
then
A3: (ConceptLattice(C)).: = LattStr(#B-carrier(C),B-meet(C),B-join(C)#) by
LATTICE2:def 2;
f c= [: the carrier of (ConceptLattice(C)).:, the carrier of
ConceptLattice(C.:) :]
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 such that
A4: y = [ConceptStr(#O,A#),(ConceptStr(#O,A#)).:] and
A5: ConceptStr(#O,A#) is FormalConcept of C;
(ConceptStr(#O,A#)).: is strict FormalConcept of C.: by A5;
then
A6: (ConceptStr(#O,A#)).: in the carrier of ConceptLattice(C.:) by A1,
CONLAT_1:31;
ConceptStr(#O,A#) in the carrier of (ConceptLattice(C)).: by A3,A5,
CONLAT_1:31;
hence thesis by A4,A6,ZFMISC_1:def 2;
end;
then reconsider f as Relation of the carrier of (ConceptLattice(C)).:, the
carrier of ConceptLattice(C.:);
the carrier of (ConceptLattice(C)).: c= dom f
proof
let y be object;
assume y in the carrier of (ConceptLattice(C)).:;
then
A7: y is strict FormalConcept of C by A3,CONLAT_1:31;
then consider
O9 being Subset of the carrier of C, A9 being Subset of the
carrier' of C such that
A8: y = ConceptStr(#O9,A9#);
set z = (ConceptStr(#O9,A9#)).:;
(ConceptStr(#O9,A9#)).: is strict FormalConcept of C.: by A7,A8;
then reconsider z as Element of ConceptLattice(C.:) by A1,CONLAT_1:31;
[y,z] in f by A7,A8;
hence thesis by XTUPLE_0:def 12;
end;
then
A9: the carrier of (ConceptLattice(C)).: = dom f;
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
A10: [x,y1] in f and
A11: [x,y2] in f;
consider O9 being Subset of the carrier of C, A9 being Subset of the
carrier' of C such that
A12: [x,y2] = [ConceptStr(#O9,A9#),(ConceptStr(#O9,A9#)).:] and
ConceptStr(#O9,A9#) is FormalConcept of C by A11;
consider O being Subset of the carrier of C, A being Subset of the
carrier' of C such that
A13: [x,y1] = [ConceptStr(#O,A#),(ConceptStr(#O,A#)).:] and
ConceptStr(#O,A#) is FormalConcept of C by A10;
A14: ConceptStr(#O,A#) = [ConceptStr(#O,A#),(ConceptStr(#O,A#)).:]`1
.= [x,y1]`1 by A13
.= x
.= [x,y2]`1
.= [ConceptStr(#O9,A9#),(ConceptStr(#O9,A9#)).:]`1 by A12
.= ConceptStr(#O9,A9#);
thus y1 = [x,y1]`2
.= [x,y2]`2 by A13,A12,A14
.= y2;
end;
then reconsider f as Function of the carrier of (ConceptLattice(C)).:, the
carrier of ConceptLattice(C.:) by A9,FUNCT_1:def 1,FUNCT_2:def 1;
A15: (ConceptLattice(C)).: = LattStr(#the carrier of ConceptLattice(C), the
L_meet of ConceptLattice(C), the L_join of ConceptLattice(C)#) by
LATTICE2:def 2;
A16: 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 aa = a%, bb = b% as Element of LattPOSet ConceptLattice(C) by
A15;
reconsider a9 = a, b9 = b as Element of ConceptLattice(C) by A15;
A17: dom f = the carrier of (ConceptLattice(C)).: by FUNCT_2:def 1;
then consider fa being object such that
A18: [a,fa] in f by XTUPLE_0:def 12;
assume a [= b;
then a% <= b% by LATTICE3:7;
then
[a%,b%] in the InternalRel of (LattPOSet((ConceptLattice(C)).:)) by
ORDERS_2:def 5;
then
[a%,b%] in (the InternalRel of (LattPOSet (ConceptLattice(C))))~ by
LATTICE3:20;
then [b%,a%] in the InternalRel of (LattPOSet (ConceptLattice(C))) by
RELAT_1:def 7;
then
A19: bb <= aa by ORDERS_2:def 5;
(%aa)% = aa & (%bb)% = bb;
then %bb [= %aa by A19,LATTICE3:7;
then
A20: (%bb)@ is-SubConcept-of (%aa)@ by CONLAT_1:43;
consider fb being object such that
A21: [b,fb] in f by A17,XTUPLE_0:def 12;
A22: fb in rng f by A21,XTUPLE_0:def 13;
A23: f.b = fb by A21,FUNCT_1:1;
consider O9 being Subset of the carrier of C, A9 being Subset of the
carrier' of C such that
A24: [b,fb] = [ConceptStr(#O9,A9#),(ConceptStr(#O9,A9#)).:] and
ConceptStr(#O9,A9#) is FormalConcept of C by A21;
A25: b = [b,fb]`1
.= [ConceptStr(#O9,A9#),(ConceptStr(#O9,A9#)).:]`1 by A24
.= (ConceptStr(#O9,A9#));
A26: fa in rng f by A18,XTUPLE_0:def 13;
A27: f.a = fa by A18,FUNCT_1:1;
consider O being Subset of the carrier of C, A being Subset of the
carrier' of C such that
A28: [a,fa] = [ConceptStr(#O,A#),(ConceptStr(#O,A#)).:] and
ConceptStr(#O,A#) is FormalConcept of C by A18;
reconsider fa as Element of ConceptLattice(C.:) by A26;
A29: a = [a,fa]`1
.= [ConceptStr(#O,A#),(ConceptStr(#O,A#)).:]`1 by A28
.= (ConceptStr(#O,A#));
reconsider fb as Element of ConceptLattice(C.:) by A22;
fb = [b,fb]`2
.= [ConceptStr(#O9,A9#),(ConceptStr(#O9,A9#)).:]`2 by A24
.= (ConceptStr(#O9,A9#)).:;
then
A30: the Intent of fb@ = the Intent of (ConceptStr(#O9,A9#)).: by
CONLAT_1:def 21
.= the Extent of ConceptStr(#O9,A9#) by Def8
.= the Extent of (b9)@ by A25,CONLAT_1:def 21;
fa = [a,fa]`2
.= [ConceptStr(#O,A#),(ConceptStr(#O,A#)).:]`2 by A28
.= (ConceptStr(#O,A#)).:;
then the Intent of fa@ = the Intent of (ConceptStr(#O,A#)).: by
CONLAT_1:def 21
.= the Extent of ConceptStr(#O,A#) by Def8
.= the Extent of (a9)@ by A29,CONLAT_1:def 21;
then the Intent of (fb)@ c= the Intent of (fa)@ by A20,A30,
CONLAT_1:def 16;
then (fa)@ is-SubConcept-of (fb)@ by CONLAT_1:28;
hence thesis by A27,A23,CONLAT_1:43;
end;
the carrier of ConceptLattice(C.:) c= rng f
proof
let u be object;
A31: dom f = the carrier of (ConceptLattice(C)).: by FUNCT_2:def 1;
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#);
A32: not(the Extent of u@ is empty & the Intent of u@ is empty) by
CONLAT_1:def 8;
A33: (AttributeDerivation(C)).(the Intent of CP) = (ObjectDerivation(C.:
)).(the Extent of u@) by Th19
.= the Extent of CP by CONLAT_1:def 10;
(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 A33,A32,CONLAT_1:def 8,def 10;
then CP in dom f by A15,A2,A31,CONLAT_1:31;
then consider v being object such that
A34: [CP,v] in f by XTUPLE_0:def 12;
consider Ov being Subset of the carrier of C, Av being Subset of the
carrier' of C such that
A35: [CP,v] = [ConceptStr(#Ov,Av#),(ConceptStr(#Ov,Av#)).:] and
ConceptStr(#Ov,Av#) is FormalConcept of C by A34;
A36: CP = [CP,v]`1
.= [ConceptStr(#Ov,Av#),(ConceptStr(#Ov,Av#)).: ]`1 by A35
.= ConceptStr(#Ov,Av#);
A37: v in rng f by A34,XTUPLE_0:def 13;
then reconsider v as strict FormalConcept of C.: by A1,CONLAT_1:31;
v = [CP,v]`2
.= [ConceptStr(#Ov,Av#),(ConceptStr(#Ov,Av#)).: ]`2 by A35
.= (ConceptStr(#Ov,Av#)).:;
then the Extent of v = the Extent of u@ & the Intent of v = the Intent
of u@ by A36,Def8;
hence thesis by A37,CONLAT_1:def 21;
end;
then
A38: rng f = the carrier of ConceptLattice(C.:);
A39: f is one-to-one
proof
let a,b be object;
assume that
A40: a in dom f and
A41: b in dom f and
A42: f.a = f.b;
reconsider a,b as Element of (ConceptLattice(C)).: by A40,A41;
consider fa being object such that
A43: [a,fa] in f by A40,XTUPLE_0:def 12;
consider fb being object such that
A44: [b,fb] in f by A41,XTUPLE_0:def 12;
A45: f.b = fb by A44,FUNCT_1:1;
consider O being Subset of the carrier of C, A being Subset of the
carrier' of C such that
A46: [a,fa] = [ConceptStr(#O,A#),(ConceptStr(#O,A#)).:] and
ConceptStr(#O,A#) is FormalConcept of C by A43;
A47: a = (ConceptStr(#O,A#)) by A46,XTUPLE_0:1;
consider O9 being Subset of the carrier of C, A9 being Subset of the
carrier' of C such that
A48: [b,fb] = [ConceptStr(#O9,A9#),(ConceptStr(#O9,A9#)).:] and
ConceptStr(#O9,A9#) is FormalConcept of C by A44;
A49: b = (ConceptStr(#O9,A9#)) by A48,XTUPLE_0:1;
A50: (ConceptStr(#O9,A9#)).:
= fb by A48,XTUPLE_0:1
.= fa by A42,A43,A45,FUNCT_1:1
.= (ConceptStr(#O,A#)).: by A46,XTUPLE_0:1;
then
A51: the Intent of ConceptStr(#O9,A9#) = the Extent of (ConceptStr(#O,A
#)).: by Def8
.= the Intent of ConceptStr(#O,A#) by Def8;
the Extent of ConceptStr(#O9,A9#) = the Intent of (ConceptStr(#O,A
#)).: by A50,Def8
.= the Extent of ConceptStr(#O,A#) by Def8;
hence thesis by A47,A49,A51;
end;
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)).:;
A52: dom f = the carrier of (ConceptLattice(C)).: by FUNCT_2:def 1;
then consider fa being object such that
A53: [a,fa] in f by XTUPLE_0:def 12;
reconsider a9 = a, b9 = b as Element of ConceptLattice(C) by A15;
assume f.a [= f.b;
then
A54: (f.a)@ is-SubConcept-of (f.b)@ by CONLAT_1:43;
consider O being Subset of the carrier of C, A being Subset of the
carrier' of C such that
A55: [a,fa] = [ConceptStr(#O,A#),(ConceptStr(#O,A#)).:] and
ConceptStr(#O,A#) is FormalConcept of C by A53;
A56: a = (ConceptStr(#O,A#)) by A55,XTUPLE_0:1;
A57: fa in rng f by A53,XTUPLE_0:def 13;
consider fb being object such that
A58: [b,fb] in f by A52,XTUPLE_0:def 12;
A59: fb in rng f by A58,XTUPLE_0:def 13;
consider O9 being Subset of the carrier of C, A9 being Subset of the
carrier' of C such that
A60: [b,fb] = [ConceptStr(#O9,A9#),(ConceptStr(#O9,A9#)).:] and
ConceptStr(#O9,A9#) is FormalConcept of C by A58;
A61: b = (ConceptStr(#O9,A9#)) by A60,XTUPLE_0:1;
reconsider fb as Element of ConceptLattice(C.:) by A59;
A62: fb = (ConceptStr(#O9,A9#)).: by A60,XTUPLE_0:1;
A63: the Intent of (f.b)@ = the Intent of fb@ by A58,FUNCT_1:1
.= the Intent of (ConceptStr(#O9,A9#)).: by A62,CONLAT_1:def 21
.= the Extent of ConceptStr(#O9,A9#) by Def8
.= the Extent of (b9)@ by A61,CONLAT_1:def 21;
reconsider fa as Element of ConceptLattice(C.:) by A57;
A64: fa = (ConceptStr(#O,A#)).: by A55,XTUPLE_0:1;
the Intent of (f.a)@ = the Intent of fa@ by A53,FUNCT_1:1
.= the Intent of (ConceptStr(#O,A#)).: by A64,CONLAT_1:def 21
.= the Extent of ConceptStr(#O,A#) by Def8
.= the Extent of (a9)@ by A56,CONLAT_1:def 21;
then the Extent of (b9)@ c= the Extent of (a9)@ by A54,A63,CONLAT_1:28;
then (b9)@ is-SubConcept-of (a9)@ by CONLAT_1:def 16;
then b9 [= a9 by CONLAT_1:43;
then (b9)% <= (a9)% by LATTICE3:7;
then
[(b9)%,(a9)%] in the InternalRel of (LattPOSet(ConceptLattice(C)) )
by ORDERS_2:def 5;
then [a%,b%] in the InternalRel of (LattPOSet (ConceptLattice(C)))~ by
RELAT_1:def 7;
then [a%,b%] in the InternalRel of (LattPOSet (ConceptLattice(C)).:) by
LATTICE3:20;
then a% <= b% by ORDERS_2:def 5;
hence thesis by LATTICE3:7;
end;
then reconsider
f as Homomorphism of (ConceptLattice(C)).:,ConceptLattice(C.:)
by A16,A38,A39,Lm2;
for CP being strict FormalConcept of C holds f.CP = CP.:
proof
let CP be strict FormalConcept of C;
CP in B-carrier(C) by CONLAT_1:31;
then CP in dom f by A3,FUNCT_2:def 1;
then consider v being object such that
A65: [CP,v] in f by XTUPLE_0:def 12;
A66: v in rng f by A65,XTUPLE_0:def 13;
consider Ov being Subset of the carrier of C, Av being Subset of the
carrier' of C such that
A67: [CP,v] = [ConceptStr(#Ov,Av#),(ConceptStr(#Ov,Av#)).:] and
ConceptStr(#Ov,Av#) is FormalConcept of C by A65;
reconsider v as strict FormalConcept of C.: by A1,A66,CONLAT_1:31;
A68: CP = ConceptStr(#Ov,Av#) by A67,XTUPLE_0:1;
v = (ConceptStr(#Ov,Av#)).: by A67,XTUPLE_0:1;
hence thesis by A65,A68,FUNCT_1:1;
end;
hence thesis;
end;
uniqueness
proof
let F1,F2 be Homomorphism of (ConceptLattice(C)).:,ConceptLattice(C.:);
assume
A69: for CP being strict FormalConcept of C holds F1.CP = CP.:;
assume
A70: for CP being strict FormalConcept of C holds F2.CP = CP.:;
A71: for u being object st u in the carrier of (ConceptLattice(C)).: holds
F1.u = F2.u
proof
let u be object;
ConceptLattice(C) = LattStr(#B-carrier(C),B-join(C),B-meet(C)#) by
CONLAT_1:def 20;
then
A72: (ConceptLattice(C)).: = LattStr(#B-carrier(C),B-meet(C),B-join(C)
#) by LATTICE2:def 2;
assume u in the carrier of (ConceptLattice(C)).:;
then reconsider u as strict FormalConcept of C by A72,CONLAT_1:31;
F1.u = u.: by A69
.= F2.u by A70;
hence thesis;
end;
dom F1 = the carrier of (ConceptLattice(C)).: & dom F2 = the carrier
of ( ConceptLattice(C)).: by FUNCT_2:def 1;
hence thesis by A71;
end;
end;
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;
theorem
for C being FormalContext holds
ConceptLattice(C.:),(ConceptLattice(C)).: are_isomorphic
proof
let C be FormalContext;
DualHomomorphism(C) is bijective by Th21;
hence thesis by LATTICE4:def 3;
end;