Abstract elements drawing library

Picasso is an Abstract element drawing library which provides several
ways of drawing abstract element.

Visualization of abstract element poses two practical problems:

  • abstract elements may be unbounded, are generally defined on more than 2 dimensions, thus rendering them in a 2d context can be difficult.

  • managing graphical libraries can be really painful (especially in OCaml) and requires unnecessary efforts.

Picasso solves these issues by providing functions that handle most of
the boilerplate you usually write to draw abstract elements and also
tries to use already installed graphical libraries instead of
requiring heavy dependencies.


you can build it locally by doing make doc or consult the online documentation

Different Abstract Domains

Picasso handles non-necessarily convex linear spaces of several
dimensions, bounded or not. It provides utilities to draw abstract
element of the Apron library
in a straightforward way, plus some other ways of defining drawable
values (see the

Dependencies and build

Picasso can use different graphical library without imposing heavy
dependencies for the end-user. It uses the opam optional dependency
feature, along with dune's alternative dependencies, to look for available
graphical library on your system to use those. If none of the graphical library is available, Picasso still generates a .SVG file. Also note that using
opam while installing a new graphical package, picasso will be
recompiled automatically make the new library usable.

Current backends include:

  • interactive Gtk window. It is the prefered way of vizualisation of Picasso. It features scrolling, zooming/unzooming, and dynamic changing of the variables of projection)

  • Non-interractive graphics window

  • SVG generation

  • LaTex generation (using TikZ)

  • 3D .obj file generation (you can use g3dviewer, among others, to visualize the 3d model)

>= "1.0.3"
>= "4.08"
>= "2.1"
Reverse Dependencies