odis — Formal Concept Analysis in Rust
odis is a Rust library for Formal Concept Analysis.
It works on formal contexts (objects × attributes incidence tables) and currently provides
concept enumeration, implication bases, lattice drawing, and attribute exploration.
Installation
[]
= "2026.3.0"
Quick start
use ;
use ConceptEnumerator;
// Parse a Burmeister (.cxt) file
let bytes = read.unwrap;
let ctx = from.unwrap;
// Enumerate all formal concepts
for in NextClosure.enumerate_concepts
// Or use the built-in shortcut (defaults to NextClosure)
let concepts: = ctx.concepts.collect;
Algorithms
Concept enumeration
ConceptEnumerator is implemented by:
| Struct | Algorithm |
|---|---|
NextClosure |
Lectic-order enumeration |
Fcbo |
Fast Close-by-One |
Implication basis
use CanonicalBasis;
use ImplicationEngine;
let basis = CanonicalBasis.compute_named_basis;
for in &basis
Lattice drawing
DrawingAlgorithm is implemented by:
| Struct | Algorithm |
|---|---|
DimDraw { timeout_ms } |
Realizer-based drawing algorithm; timeout_ms = 0 for unbounded |
Sugiyama |
Hierarchical layout via rust-sugiyama |
use ;
use ;
let lattice = ctx.concept_lattice.unwrap;
let drawing = DimDraw .draw.unwrap;
Iceberg concept lattices
use Titanic;
use IcebergConceptEnumerator;
// Concepts whose extent has at least 3 objects
let iceberg = Titanic.enumerate_named_concepts;
Attribute exploration
ExplorationMachine drives interactive attribute exploration over a growing context.
The state machine separates exploration logic from I/O.
Formal context format
Contexts are parsed from the Burmeister .cxt format:
B
2
2
bird
fish
flies
lives_in_water
X.
.X
API documentation