Formal Concept

A pair (A,B) is a formal concept of a FormalContext (G, M, I) provided that:

  • A ⊆ G,
  • B ⊆ M,
  • A′ = B, and
  • B′ = A.

Equivalently and more intuitively, (A,B) is a formal concept precisely when:

  • every object in A has every attribute in B,
  • for every object in G that is not in A, there is some attribute in B that the object does not have,
  • for every attribute in M that is not in B, there is some object in A that does not have that attribute.

Introduced properties

fun attributes: HashSet[A]

fca :: FormalConcept :: attributes

Concept attributes
protected fun attributes=(attributes: HashSet[A])

fca :: FormalConcept :: attributes=

Concept attributes
fun is_subconcept(super_concept: FormalConcept[O, A]): Bool

fca :: FormalConcept :: is_subconcept

Is self a subconcept of super_concept?
fun objects: HashSet[O]

fca :: FormalConcept :: objects

Concept objects
protected fun objects=(objects: HashSet[O])

fca :: FormalConcept :: objects=

Concept objects

Redefined properties

redef type SELF: FormalConcept[O, A]

fca $ FormalConcept :: SELF

Type of this instance, automatically specialized in every class
redef fun to_s: String

fca $ FormalConcept :: to_s

User readable representation of self.

All properties

fun !=(other: nullable Object): Bool

core :: Object :: !=

Have self and other different values?
fun ==(other: nullable Object): Bool

core :: Object :: ==

Have self and other the same value?
type CLASS: Class[SELF]

core :: Object :: CLASS

The type of the class of self.
type SELF: Object

core :: Object :: SELF

Type of this instance, automatically specialized in every class
fun attributes: HashSet[A]

fca :: FormalConcept :: attributes

Concept attributes
protected fun attributes=(attributes: HashSet[A])

fca :: FormalConcept :: attributes=

Concept attributes
protected fun class_factory(name: String): CLASS

core :: Object :: class_factory

Implementation used by get_class to create the specific class.
fun class_name: String

core :: Object :: class_name

The class name of the object.
fun get_class: CLASS

core :: Object :: get_class

The meta-object representing the dynamic type of self.
fun hash: Int

core :: Object :: hash

The hash code of the object.
init init

core :: Object :: init

fun inspect: String

core :: Object :: inspect

Developer readable representation of self.
protected fun inspect_head: String

core :: Object :: inspect_head

Return "CLASSNAME:#OBJECTID".
intern fun is_same_instance(other: nullable Object): Bool

core :: Object :: is_same_instance

Return true if self and other are the same instance (i.e. same identity).
fun is_same_serialized(other: nullable Object): Bool

core :: Object :: is_same_serialized

Is self the same as other in a serialization context?
intern fun is_same_type(other: Object): Bool

core :: Object :: is_same_type

Return true if self and other have the same dynamic type.
fun is_subconcept(super_concept: FormalConcept[O, A]): Bool

fca :: FormalConcept :: is_subconcept

Is self a subconcept of super_concept?
intern fun object_id: Int

core :: Object :: object_id

An internal hash code for the object based on its identity.
fun objects: HashSet[O]

fca :: FormalConcept :: objects

Concept objects
protected fun objects=(objects: HashSet[O])

fca :: FormalConcept :: objects=

Concept objects
fun output

core :: Object :: output

Display self on stdout (debug only).
intern fun output_class_name

core :: Object :: output_class_name

Display class name on stdout (debug only).
fun serialization_hash: Int

core :: Object :: serialization_hash

Hash value use for serialization
intern fun sys: Sys

core :: Object :: sys

Return the global sys object, the only instance of the Sys class.
abstract fun to_jvalue(env: JniEnv): JValue

core :: Object :: to_jvalue

fun to_s: String

core :: Object :: to_s

User readable representation of self.
package_diagram fca::FormalConcept FormalConcept core::Object Object fca::FormalConcept->core::Object

Parents

interface Object

core :: Object

The root of the class hierarchy.

Class definitions

fca $ FormalConcept
# Formal Concept
#
# A pair *(A,B)* is a formal concept of a FormalContext *(G, M, I)* provided that:
#
# * *A ⊆ G*,
# * *B ⊆ M*,
# * *A′ = B*, and
# * *B′ = A*.
#
# Equivalently and more intuitively, *(A,B)* is a formal concept precisely when:
#
# * every object in *A* has every attribute in *B*,
# * for every object in *G* that is not in *A*, there is some attribute in *B* that
#   the object does not have,
# * for every attribute in *M* that is not in *B*, there is some object in *A*
#   that does not have that attribute.
class FormalConcept[O: Object, A: Object]

	# Concept attributes
	var attributes = new HashSet[A]

	# Concept objects
	var objects = new HashSet[O]

	# Is `self` a subconcept of `super_concept`?
	#
	# A concept C1 is a subconcept of C2 if C2 has all the objects of C1.
	fun is_subconcept(super_concept: FormalConcept[O, A]): Bool do
		if self == super_concept then return false
		if objects.length > super_concept.objects.length then return false
		return super_concept.objects.has_all(objects)
	end

	redef fun to_s do return "{attributes}\n{objects}"
end
lib/fca/fca.nit:182,1--216,3