Architecture

Modules

The GALACTIC kernel contains several mathematical algebra modules:

Class diagrams

"AbstractFiniteBinaryRelation[_E, _E]" <|-- "AbstractFiniteEndoRelation[_E]"
"AbstractFiniteEndoRelation[_E]" <|-- "AbstractFiniteDirectedAcyclicRelation[_E]"
"AbstractFiniteDirectedAcyclicRelation[_E]" <|-- "AbstractFinitePartiallyOrderedSet[_E]"
"AbstractFinitePartiallyOrderedSet[_E]" <|-- "AbstractFiniteJoinSemiLattice[_E]"
"AbstractFinitePartiallyOrderedSet[_E]" <|-- "AbstractFiniteMeetSemiLattice[_E]"
"AbstractFiniteJoinSemiLattice[_E]" <|-- "AbstractFiniteLattice[_E]"
"AbstractFiniteMeetSemiLattice[_E]" <|-- "AbstractFiniteLattice[_E]"
"AbstractFiniteLattice[_E]" <|-- "FrozenFiniteLattice[_E]"
"FrozenFiniteLattice[_E]" <|-- "ExtensibleFiniteLattice[_E]"

class "ExtensibleFiniteLattice[_E]" {
    extend(iterable: Iterable[_E])
}

class "FrozenFiniteLattice[_E]" {
}

abstract class "AbstractFiniteLattice[_E]" {
    reduced_context : AbstractFiniteBinaryRelation[_E, _E]
}

abstract class "AbstractFiniteJoinSemiLattice[_E]" {
    co_atoms : Collection[_E]
    join_irreducible : Collection[_E]
    greatest_join_irreducible(element: _E) : Collection[_E]
}

abstract class "AbstractFiniteMeetSemiLattice[_E]" {
    atoms : Collection[_E]
    meet_irreducible : Collection[_E]
    smallest_meet_irreducible(element: _E) : Collection[_E]
}

abstract class "AbstractFinitePartiallyOrderedSet[_E]" {
    cover : AbstractFiniteCoveringRelation[_E]
    order : AbstractFinitePartialOrder[_E]:
    top : Collection[_E]
    bottom : Collection[_E]
    maximum : Optional[_E]
    minimum : Optional[_E]
    upper_limit(limit: _E, strict: bool = False) : Collection[_E]
    lower_limit(limit: _E, strict: bool = False) : Collection[_E]
    filter(element: _E) : AbstractFinitePartiallyOrderedSet[_E]
    ideal(element: _E) : AbstractFinitePartiallyOrderedSet[_E]
}

abstract class "AbstractFiniteBinaryRelation[_E, _E]" {
    domain : Collection[_E]
    co_domain : Collection[_E]
    successors(element: _E) : Collection[_E]
    predecessors(element: _E) : Collection[_E]
}

abstract class "AbstractFiniteEndoRelation[_E]" {
}

abstract class "AbstractFiniteDirectedAcyclicRelation[_E]" {
    sinks : Collection[_E]
    sources : Collection[_E]
}

Lattice class