Article CONLAT_2, MML version 4.99.1005
:: CONLAT_2:funcnot 1 => CONLAT_2:func 1
definition
let a1 be non quasi-empty ContextStr;
let a2 be strict non empty concept-like ConceptStr over a1;
func @ A2 -> Element of the carrier of ConceptLattice a1 equals
a2;
end;
:: CONLAT_2:def 1
theorem
for b1 being non quasi-empty ContextStr
for b2 being strict non empty concept-like ConceptStr over b1 holds
@ b2 = b2;
:: CONLAT_2:funcreg 1
registration
let a1 be non quasi-empty ContextStr;
cluster ConceptLattice a1 -> non empty strict bounded;
end;
:: CONLAT_2:th 1
theorem
for b1 being non quasi-empty ContextStr holds
Bottom ConceptLattice b1 = Concept-with-all-Attributes b1 & Top ConceptLattice b1 = Concept-with-all-Objects b1;
:: CONLAT_2:th 2
theorem
for b1 being non quasi-empty ContextStr
for b2 being non empty Element of bool bool the Objects of b1 holds
(ObjectDerivation b1) . union b2 = meet {(ObjectDerivation b1) . b3 where b3 is Element of bool the Objects of b1: b3 in b2};
:: CONLAT_2:th 3
theorem
for b1 being non quasi-empty ContextStr
for b2 being non empty Element of bool bool the Attributes of b1 holds
(AttributeDerivation b1) . union b2 = meet {(AttributeDerivation b1) . b3 where b3 is Element of bool the Attributes of b1: b3 in b2};
:: CONLAT_2:th 4
theorem
for b1 being non quasi-empty ContextStr
for b2 being Element of bool the carrier of ConceptLattice b1 holds
"/\"(b2,ConceptLattice b1) is non empty concept-like ConceptStr over b1 &
"\/"(b2,ConceptLattice b1) is non empty concept-like ConceptStr over b1;
:: CONLAT_2:funcnot 2 => CONLAT_2:func 2
definition
let a1 be non quasi-empty ContextStr;
let a2 be Element of bool the carrier of ConceptLattice a1;
func "/\"(A2,A1) -> non empty concept-like ConceptStr over a1 equals
"/\"(a2,ConceptLattice a1);
end;
:: CONLAT_2:def 2
theorem
for b1 being non quasi-empty ContextStr
for b2 being Element of bool the carrier of ConceptLattice b1 holds
"/\"(b2,b1) = "/\"(b2,ConceptLattice b1);
:: CONLAT_2:funcnot 3 => CONLAT_2:func 3
definition
let a1 be non quasi-empty ContextStr;
let a2 be Element of bool the carrier of ConceptLattice a1;
func "\/"(A2,A1) -> non empty concept-like ConceptStr over a1 equals
"\/"(a2,ConceptLattice a1);
end;
:: CONLAT_2:def 3
theorem
for b1 being non quasi-empty ContextStr
for b2 being Element of bool the carrier of ConceptLattice b1 holds
"\/"(b2,b1) = "\/"(b2,ConceptLattice b1);
:: CONLAT_2:th 5
theorem
for b1 being non quasi-empty ContextStr holds
"\/"({} ConceptLattice b1,b1) = Concept-with-all-Attributes b1 &
"/\"({} ConceptLattice b1,b1) = Concept-with-all-Objects b1;
:: CONLAT_2:th 6
theorem
for b1 being non quasi-empty ContextStr holds
"\/"([#] the carrier of ConceptLattice b1,b1) = Concept-with-all-Objects b1 &
"/\"([#] the carrier of ConceptLattice b1,b1) = Concept-with-all-Attributes b1;
:: CONLAT_2:th 7
theorem
for b1 being non quasi-empty ContextStr
for b2 being non empty Element of bool the carrier of ConceptLattice b1 holds
the Extent of "\/"(b2,b1) = (AttributeDerivation b1) . ((ObjectDerivation b1) . union {the Extent of ConceptStr(#b3,b4#) where b3 is Element of bool the Objects of b1, b4 is Element of bool the Attributes of b1: ConceptStr(#b3,b4#) in b2}) &
the Intent of "\/"(b2,b1) = meet {the Intent of ConceptStr(#b3,b4#) where b3 is Element of bool the Objects of b1, b4 is Element of bool the Attributes of b1: ConceptStr(#b3,b4#) in b2};
:: CONLAT_2:th 8
theorem
for b1 being non quasi-empty ContextStr
for b2 being non empty Element of bool the carrier of ConceptLattice b1 holds
the Extent of "/\"(b2,b1) = meet {the Extent of ConceptStr(#b3,b4#) where b3 is Element of bool the Objects of b1, b4 is Element of bool the Attributes of b1: ConceptStr(#b3,b4#) in b2} &
the Intent of "/\"(b2,b1) = (ObjectDerivation b1) . ((AttributeDerivation b1) . union {the Intent of ConceptStr(#b3,b4#) where b3 is Element of bool the Objects of b1, b4 is Element of bool the Attributes of b1: ConceptStr(#b3,b4#) in b2});
:: CONLAT_2:th 9
theorem
for b1 being non quasi-empty ContextStr
for b2 being strict non empty concept-like ConceptStr over b1 holds
"\/"({ConceptStr(#b3,b4#) where b3 is Element of bool the Objects of b1, b4 is Element of bool the Attributes of b1: ex b5 being Element of the Objects of b1 st
b5 in the Extent of b2 &
b3 = (AttributeDerivation b1) . ((ObjectDerivation b1) . {b5}) &
b4 = (ObjectDerivation b1) . {b5}},ConceptLattice b1) = b2;
:: CONLAT_2:th 10
theorem
for b1 being non quasi-empty ContextStr
for b2 being strict non empty concept-like ConceptStr over b1 holds
"/\"({ConceptStr(#b3,b4#) where b3 is Element of bool the Objects of b1, b4 is Element of bool the Attributes of b1: ex b5 being Element of the Attributes of b1 st
b5 in the Intent of b2 &
b3 = (AttributeDerivation b1) . {b5} &
b4 = (ObjectDerivation b1) . ((AttributeDerivation b1) . {b5})},ConceptLattice b1) = b2;
:: CONLAT_2:funcnot 4 => CONLAT_2:func 4
definition
let a1 be non quasi-empty ContextStr;
func gamma A1 -> Function-like quasi_total Relation of the Objects of a1,the carrier of ConceptLattice a1 means
for b1 being Element of the Objects of a1 holds
ex b2 being Element of bool the Objects of a1 st
ex b3 being Element of bool the Attributes of a1 st
it . b1 = ConceptStr(#b2,b3#) &
b2 = (AttributeDerivation a1) . ((ObjectDerivation a1) . {b1}) &
b3 = (ObjectDerivation a1) . {b1};
end;
:: CONLAT_2:def 4
theorem
for b1 being non quasi-empty ContextStr
for b2 being Function-like quasi_total Relation of the Objects of b1,the carrier of ConceptLattice b1 holds
b2 = gamma b1
iff
for b3 being Element of the Objects of b1 holds
ex b4 being Element of bool the Objects of b1 st
ex b5 being Element of bool the Attributes of b1 st
b2 . b3 = ConceptStr(#b4,b5#) &
b4 = (AttributeDerivation b1) . ((ObjectDerivation b1) . {b3}) &
b5 = (ObjectDerivation b1) . {b3};
:: CONLAT_2:funcnot 5 => CONLAT_2:func 5
definition
let a1 be non quasi-empty ContextStr;
func delta A1 -> Function-like quasi_total Relation of the Attributes of a1,the carrier of ConceptLattice a1 means
for b1 being Element of the Attributes of a1 holds
ex b2 being Element of bool the Objects of a1 st
ex b3 being Element of bool the Attributes of a1 st
it . b1 = ConceptStr(#b2,b3#) &
b2 = (AttributeDerivation a1) . {b1} &
b3 = (ObjectDerivation a1) . ((AttributeDerivation a1) . {b1});
end;
:: CONLAT_2:def 5
theorem
for b1 being non quasi-empty ContextStr
for b2 being Function-like quasi_total Relation of the Attributes of b1,the carrier of ConceptLattice b1 holds
b2 = delta b1
iff
for b3 being Element of the Attributes of b1 holds
ex b4 being Element of bool the Objects of b1 st
ex b5 being Element of bool the Attributes of b1 st
b2 . b3 = ConceptStr(#b4,b5#) &
b4 = (AttributeDerivation b1) . {b3} &
b5 = (ObjectDerivation b1) . ((AttributeDerivation b1) . {b3});
:: CONLAT_2:th 11
theorem
for b1 being non quasi-empty ContextStr
for b2 being Element of the Objects of b1
for b3 being Element of the Attributes of b1 holds
(gamma b1) . b2 is non empty concept-like ConceptStr over b1 &
(delta b1) . b3 is non empty concept-like ConceptStr over b1;
:: CONLAT_2:th 12
theorem
for b1 being non quasi-empty ContextStr holds
rng gamma b1 is supremum-dense(ConceptLattice b1) & rng delta b1 is infimum-dense(ConceptLattice b1);
:: CONLAT_2:th 13
theorem
for b1 being non quasi-empty ContextStr
for b2 being Element of the Objects of b1
for b3 being Element of the Attributes of b1 holds
b2 is-connected-with b3
iff
(gamma b1) . b2 [= (delta b1) . b3;
:: CONLAT_2:th 14
theorem
for b1 being non empty Lattice-like complete LattStr
for b2 being non quasi-empty ContextStr holds
ConceptLattice b2,b1 are_isomorphic
iff
ex b3 being Function-like quasi_total Relation of the Objects of b2,the carrier of b1 st
ex b4 being Function-like quasi_total Relation of the Attributes of b2,the carrier of b1 st
rng b3 is supremum-dense(b1) &
rng b4 is infimum-dense(b1) &
(for b5 being Element of the Objects of b2
for b6 being Element of the Attributes of b2 holds
b5 is-connected-with b6
iff
b3 . b5 [= b4 . b6);
:: CONLAT_2:funcnot 6 => CONLAT_2:func 6
definition
let a1 be non empty Lattice-like LattStr;
func Context A1 -> non quasi-empty strict ContextStr equals
ContextStr(#the carrier of a1,the carrier of a1,LattRel a1#);
end;
:: CONLAT_2:def 6
theorem
for b1 being non empty Lattice-like LattStr holds
Context b1 = ContextStr(#the carrier of b1,the carrier of b1,LattRel b1#);
:: CONLAT_2:th 15
theorem
for b1 being non empty Lattice-like complete LattStr holds
ConceptLattice Context b1,b1 are_isomorphic;
:: CONLAT_2:th 16
theorem
for b1 being non empty Lattice-like LattStr holds
b1 is complete
iff
ex b2 being non quasi-empty ContextStr st
ConceptLattice b2,b1 are_isomorphic;
:: CONLAT_2:funcreg 2
registration
let a1 be non empty Lattice-like complete LattStr;
cluster a1 .: -> strict complete;
end;
:: CONLAT_2:funcnot 7 => CONLAT_2:func 7
definition
let a1 be non quasi-empty ContextStr;
func A1 .: -> non quasi-empty strict ContextStr equals
ContextStr(#the Attributes of a1,the Objects of a1,(the Information of a1) ~#);
end;
:: CONLAT_2:def 7
theorem
for b1 being non quasi-empty ContextStr holds
b1 .: = ContextStr(#the Attributes of b1,the Objects of b1,(the Information of b1) ~#);
:: CONLAT_2:th 17
theorem
for b1 being non quasi-empty strict ContextStr holds
b1 .: .: = b1;
:: CONLAT_2:th 18
theorem
for b1 being non quasi-empty ContextStr
for b2 being Element of bool the Objects of b1 holds
(ObjectDerivation b1) . b2 = (AttributeDerivation (b1 .:)) . b2;
:: CONLAT_2:th 19
theorem
for b1 being non quasi-empty ContextStr
for b2 being Element of bool the Attributes of b1 holds
(AttributeDerivation b1) . b2 = (ObjectDerivation (b1 .:)) . b2;
:: CONLAT_2:funcnot 8 => CONLAT_2:func 8
definition
let a1 be non quasi-empty ContextStr;
let a2 be ConceptStr over a1;
func A2 .: -> strict ConceptStr over a1 .: means
the Extent of it = the Intent of a2 & the Intent of it = the Extent of a2;
end;
:: CONLAT_2:def 8
theorem
for b1 being non quasi-empty ContextStr
for b2 being ConceptStr over b1
for b3 being strict ConceptStr over b1 .: holds
b3 = b2 .:
iff
the Extent of b3 = the Intent of b2 & the Intent of b3 = the Extent of b2;
:: CONLAT_2:funcnot 9 => CONLAT_2:func 9
definition
let a1 be non quasi-empty ContextStr;
let a2 be non empty concept-like ConceptStr over a1;
redefine func a2 .: -> strict non empty concept-like ConceptStr over a1 .:;
end;
:: CONLAT_2:th 20
theorem
for b1 being non quasi-empty strict ContextStr
for b2 being strict non empty concept-like ConceptStr over b1 holds
b2 .: .: = b2;
:: CONLAT_2:funcnot 10 => CONLAT_2:func 10
definition
let a1 be non quasi-empty ContextStr;
func DualHomomorphism A1 -> Homomorphism of (ConceptLattice a1) .:,ConceptLattice (a1 .:) means
for b1 being strict non empty concept-like ConceptStr over a1 holds
it . b1 = b1 .:;
end;
:: CONLAT_2:def 9
theorem
for b1 being non quasi-empty ContextStr
for b2 being Homomorphism of (ConceptLattice b1) .:,ConceptLattice (b1 .:) holds
b2 = DualHomomorphism b1
iff
for b3 being strict non empty concept-like ConceptStr over b1 holds
b2 . b3 = b3 .:;
:: CONLAT_2:th 21
theorem
for b1 being non quasi-empty ContextStr holds
DualHomomorphism b1 is isomorphism((ConceptLattice b1) .:, ConceptLattice (b1 .:));
:: CONLAT_2:th 22
theorem
for b1 being non quasi-empty ContextStr holds
ConceptLattice (b1 .:),(ConceptLattice b1) .: are_isomorphic;