GALACTIC 0.4.0 (2022-01-04)
Features
Use
flake8-spellcheck
for comments.Add the possibility to use the cardinality difference between concepts for the length of the hierarchical link connecting them in the Hasse diagram.
This is made possible by two new classes
ConceptLatticeRenderer
andHierarchicalRenderer
inheriting respectively fromGraphRenderer
andEdgeRenderer
.Stop using the bitarray package which was bugged for a recent release. The
bitarray.frozenbitarray
structure was used as a container for the membership of an element to a concept. It has been replaced by the use of the newgalactic.algebras.set.FiniteSubSet
class.Add the one and only ReducedContextCompletion (
_reduced_context_completion
) algorithm, replacing the previous extends functions. The ReducedContextCompletion work in a linear time and compute a new lattice \(L'\), from a previous lattice \(L\) where \(L'\) is the minimal lattice containing \(L\) and a given value \(v\).This is done by maintaining the direct predecessor \(j^-\) of a join irreducible \(j\) and the direct successor \(m^+\) of a given meet irreducible \(m\) in two dictionaries.
Bug Fixes
Replace
TypeError
exception by aValueError
exception when two concepts with different closure operators are mixed or compared.Stop using reno which is not designed to be used in a git flow environment. Now we use towncrier for release notes.
GALACTIC 0.3.0 (2021-06-23)
Prelude
Version 0.3.0 is a major rewrite of the galactic framework core.
Features
Use of __slots__ everywhere.
Implementation of algebraic structures:
Relational structures:
finitary relation
binary relation
selection
projection
Partially Ordered Set structures:
poset
covering relation
Closure systems
closure
closed
Moore Family
(Semi-)-lattices
join semi-lattices
meet semi-lattices
lattices
GALACTIC 0.2.0 (2020-06-26)
Features
Give the possibility to the concept renderer to specify a maximum width for a concept.
Combine predicates from the same description when establishing rules.
For example, using the multiple predicate (
M
), a ruleif M(3) and M(5) then M(15)
should not be generated, since M(15) can be always deduced from
M(3)
andM(5)
.Another type of useless information are the predicates which are always
True
(D(0)
andM(1)
for the case of divisor and multiple predicates).Each description class can implement the
intersection()
method which computes the minimal description of a collection of predicates for a given description. In the example above, the intersection ofM(3)
andM(5)
should giveM(15)
.Add a cache system on all characteristics.
Start using mypy.
Use renderers for displaying Hasse diagrams.
Use lazy instantiation for the
Descriptors
class.Add two array-like characteristics:
galactic.characteristics.Item
galactic.characteristics.Slice
Deprecations and Removals
Change API for readers. They receive now a TextIO object.
Add mandatory description argument in all sub-classes of
BasicStrategy
. RemoveOptional
inBasicStrategy
.Consider now an
Explorer
as a collection of strategies. AnExplorer
can be run on a population.
Bug Fixes
Ensure that identifiers used for lattice generation are unique.
Fix the way to compute predecessors and successors of a concept in the
CompactLattice
class.Use
html.escape
for escaping HTML output.Fix _pseudo generators for Canonical Direct Basis.