Skip to content
A General-Purpose Tool for Formal Concept Analysis
Branch: dev
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc Use Graph Library instead of (struct directed-graph nodes neighbor-fn) ( Jun 15, 2019
src Fix: Wrong path for gui. Jun 30, 2019
testing-data Added some more classical contexts to testing-data Jun 21, 2019
.dir-locals.el Add .dir-locals.el Sep 28, 2016
.gitmodules Add wiki as submodule Nov 18, 2012
.travis.yml Only build master and dev on travis Sep 23, 2016 Add contributor Jun 18, 2019
LICENSE Fixed link for precompiled binaries. Jul 15, 2019
project.clj Ordered dependencies. Added explicitly clojure-complete. Jun 30, 2019

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.

You can then run it through

$ java -jar conexp-clj-2.0.0-RC1.jar

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

$ java -jar conexp-clj-2.0.0-RC1.jar -g



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.

You can’t perform that action at this time.