A General-Purpose Tool for Formal Concept Analysis
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


conexp-clj Build Status

This is conexp-clj, a general purpose software tool for Formal Concept Analysis.

The project has been started by Daniel Borchmann under supervision of Christian Meschke as part of the DFG project GA 216/10-1.


conexp-clj is a pocket-calculator for Formal Concept Analysis. Its main purpose is to enable nontrivial examples to be computed easily.

conexp-clj features include:

  • Basic Operations on Formal Contexts
  • Relational Algebra with Formal Contexts
  • Transparent IO for Formal Contexts (in development)
  • Scaling for Many-Valued Contexts
  • Implicational Theory and Basic Attribute Exploration
  • NextClosure (of course)
  • Computing Luxenburger-Bases and Iceberg Concept Sets
  • IO for Many-Valued Contexts
  • Lattice Layouts and Lattice IO (some...)
  • A bit of Fuzzy-FCA
  • Interface for sage

Note that conexp-clj is not a high-performance tool for Formal Concept Analysis. If you want this, check out Uta Priss' website on FCA software.


You need

  • a Jave Runtime Environment (≥ 1.6)
  • Leiningen (≥ 2.0.0) if you want to run conexp-clj from source

How to Run

The recommended way to run conexp-clj is to download a pre-compiled version, unpacking the zip file and puting the contained bin directory into you path. You can then run

$ conexp-clj

from you command line (without the "$") to get a bare conexp-clj repl. If you want to try the experimental GUI, you can use

$ conexp-clj --gui



The current main source of documentation on conexp-clj is its Wiki. Additionally, for general help on a function f, you can use the clojure function doc with

(doc f)

For finding functions you may find useful, you can use find-doc

(find-doc "Whatever you may find useful")

Additional Documentation:

Running conexp-clj from source

To run conexp-clj from source, switch in the source directory of conexp-clj and run

$ lein deps

This will download any missing jar files needed for conexp-clj to run. To quickly obtain a repl just issue

$ lein repl

If you want a more sophisticated repl, you may try nrepl.el.

Compilation Instructions for conexp-clj

To create a standalone zip on your own, just run make in the top source directory. This will (should) do everything to create a zip archive containing a compiled version of conexp-clj. You can also run this compiled version directly by invoking ./conexp-clj/bin/conexp-clj (after unpacking the .zip file.)

Contributing Authors



Copyright ⓒ 2009—2018 Daniel Borchmann

Distributed under the Eclipse Public License.

This program uses an adapted version of the G library, a 2D graphics library and rendering engine for Java, ⓒ 2009 GeoSoft, licensed under the GNU Lesser General Public License (LGPL). Modifications to the original version of G are only concerned with exposing internals necessary for conexp-clj to work. The modified version of G is again licensed under LGPL.

This program uses parts of the LatDraw library, ⓒ 2002 Ralph Freese.