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 and HierarchicalRenderer inheriting respectively from GraphRenderer and EdgeRenderer.

  • 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 new galactic.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 a ValueError 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 rule

    if M(3) and M(5) then M(15)
    

    should not be generated, since M(15) can be always deduced from M(3) and M(5).

    Another type of useless information are the predicates which are always True (D(0) and M(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 of M(3) and M(5) should give M(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. Remove Optional in BasicStrategy.

  • Consider now an Explorer as a collection of strategies. An Explorer 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.

Other Notes

  • Move OrderedSet to the galactic.algebras.set package.

  • Use cythonize.

  • Refactor examples folder.

  • Reorganize documentation.

  • Start using reno.