- Computer Science Laboratory

Forge

https://gitlab.lip6.fr

APR Software

OMicroB : OCaml on Microcontroller Boards

OMicroB is a specialized implementation of the OCaml virtual machine designed to run on resource-constrained microcontrollers. This implementation can indeed run non-trivial OCaml programs on small microcontrollers, and provides the embedded software developer with all the high-level programming paradigms of the OCaml language (functional, imperative, modular, object-oriented) as well as increased security through static typing and automatic memory management. The OMicroB compilation chain takes a byte-code executable directly produced by the OCaml compiler and after several analysis passes (dead code detection, partial evaluation, ...) produces a C code embedding the VM, its execution library and the transformed byte-code. This produced C code, highly portable, targets different microcontroller architectures and can be compiled and executed on a standard PC for simulation and debugging purposes.

Project Leader : Emmanuel CHAILLOUX

04/2023

https://github.com/stevenvar/OMicroB

MOPSA analyzer : MOPSA Static Analyzer

MOPSA is a multi-language program verification software based on sound static analysis by abstract interpretation. It automatically infers invariants and detects, at compile time, the possible run-time errors. The analysis computes an interpretation of programs in a collection of reusable abstractions programmed in OCaml. Thanks to its modular conception, MOPSA can be easily extended in the set of properties and the set of analyzed languages. MOPSA currently supports significant subsets of the C and Python 3 languages. In C, MOPSA detects undefined behaviors as well invalid calls to the standard C library (specified in a dedicated modelization language). In Python, MOPSA, performs a type, value, and exception analysis.

Project Leader : Antoine Miné

03/2018

https://gitlab.com/mopsa/mopsa-analyzer

https://gitlab.com/mopsa/mopsa-analyzer

TTK : Topology ToolKit

The Topology ToolKit (TTK) is an open-source library and software collection for topological data analysis and visualization. TTK can handle scalar data defined either on regular grids or triangulations, in 2D, 3D, or more. It provides a substantial collection of generic, efficient and robust implementations of key algorithms in topological data analysis.

Project Leader : Julien Tierny

04/2017

https://topology-tool-kit.github.io/

https://topology-tool-kit.github.io/

piexplorer : an explicit state-space generation tool and a model-checker for the Pi-calculus

The problem of generating an explicit state-space for the pi-calculus is a complex problem. As of today, there exists only two tools with this functionality : the HAL laboratory and pi-explorer. The latter is based on a symbolic semantics that is much more economical than the early semantics as implemented by HAL. A model checker is also associated to the tool, but it is possible to use external tools based on the state graphs generated by the pi-explorer. These tools are based on recent works of the APR team (the pi-graphs), in a collaboration with university of Evry and université libre de Bruxelles.

Project Leader : Frédéric PESCHANSKI

09/2015

https://github.com/fredokun/piexplorer

LaTTe : a laboratory of type theory experiments

LaTTe is a proof assistant library based on type theory. The specific feature of LaTTe is its design as a library (unlike most proof assistant, generally designed as standalone tools) tightly integrated with the Clojure language and ecosystem. This enables "proving in the large": sharing mathematical contents across the internet in a collaborative way. It also provides a domain specific language for declarative proofs, based on "fitch-style" proofs for natural deduction. The tool is developed by members of the APR team in a collaboration with the Whisper team (Pierre-Evariste Dagand).

Project Leader : Frédéric PESCHANSKI

03/2015

https://github.com/fredokun/LaTTe

PENDULUM : OCaml syntax extension dedicated to the programming of reactive systems on the Web

Pendulum is a language dedicated to the programming of reactive systems on the Web. It has a powerful expressivity to describe synchronous concurrent systems communicating with broadcast signals. Its constructions and implementation are mostly based on Esterel. The language is embedded in OCaml as a syntax extension. It allows the programmer to describe reactive machines as OCaml values, and run them on signal arguments. The execution of concurrency in pendulum is completely sequential and the scheduling is static. (similar work and inspiration)

Project Leader : Rémy EL SIBAE

11/2014

https://github.com/remyzorg/pendulum

AbSolute : AbSolute

AbSolute is a constraint solver based on abstract domains.

It implements the resolution method presented in the article: (VMCAI), Rome, Italy, 2013 [Article] [Article in French] Antoine Miné, Charlotte Truchet, Frédéric Benhamou, Constraint Solver based on Abstract Domains, 14th International Conference on Verification,

This solver can solve continuous, discrete and mixed problems (containing both integer and real variables) and proposes techniques for processing both linear and non-linear constraints. Rounding errors are taken into account during the resolution. The solver calculates sound float approximations of the real solutions of a problem. AbSolute uses Apron, an Ocaml library of abstract domains, which solves problems using other abstract domains than intervals.

Project Leader : Marie PELLEAU

11/2011

https://github.com/mpelleau/AbSolute

Arbogen : a fast uniform random tree generator

Arbogen is a fast uniform random generator of tree structures. The tool reads a grammar file describing a tree structure (e.g. binary trees, 2-3-4 trees, etc.) and a size interval (eg. trees of size 1000+-100). From the grammar one or many trees satisfying the structure and the size interval are produced. The generated tree are generated with a guarantee of uniformity, which means that it is the "average" tree for the given size. The tool relies on advanced algorithms based on Boltzman sampling, based on recent APR research works (in the realm of ANR Magnum 2010-2014).

Project Leader : Frédéric PESCHANSKI

10/2011

https://github.com/fredokun/arbogen

SPOC : Strem Processing with OCaml

SPOC is a set of tools for GPGPU programming with OCaml.

The SPOC library enables the detection and use of GPGPU devices with OCaml using Cuda and OpenCL. There is also a camlp4 syntax extension to handle external Cuda or OpenCL kernels, as well as a DSL (called Sarek) to express GPGPU kernels from the OCaml code.

Project Leader : Mathias BOURGOIN

09/2010

http://mathiasbourgoin.github.io/SPOC/