KaSim API

The main entry point of KaSim executable is main/KaSim.ml but let's describe the API bottom-up.

The folder dataStructures/ has a transparent name. You can find there:
DynamicArray
Array with dynamic size
SetMap
Our own implementattion of Set and Map
IntCollection
Imperative int set
ValMap
Operator
Compiled algebraic expression
Nbr
Kappa numbers (either float, int or int64) and operations on them
Fractions
NamedDecls
Stores a bunch of stuff the user gave a name to
Locality
Output a JSON value of type Locality.t.

List_util
Set union of 2 sorted list When l1 is included in l2: merge_uniq l1 l2 == merge_uniq l2 l1 == l2
Option_util
Utilities on option
Tools
Misc utilities
Some pretty printing utilities are here too:
Pp
Pp_svg
Pp_html
graph_page title deps header core f
Progress_report
Utilities to show progress on stdout
Including the KaSa machinery:
Loggers
* loggers.mli * * a module for KaSim * Jérôme Feret, projet Antique, INRIA Paris * * KaSim * Jean Krivine, Université Paris-Diderot, CNRS * * Creation: 26/01/2016 * Last modification: 25/05/2016 * * * * * Copyright 2016 Institut National de Recherche en Informatique et * en Automatique.
Graph_loggers
* graph_loggers.mli * * a module for KaSim * Jérôme Feret, projet Antique, INRIA Paris * * KaSim * Jean Krivine, Université Paris-Diderot, CNRS * * Creation: 23/05/2016 * Last modification: 25/05/2016 * * * * * Copyright 2016 Institut National de Recherche en Informatique et * en Automatique.
Ode_loggers
* graph_loggers.ml * * a module for KaSim * Jérôme Feret, projet Antique, INRIA Paris * * KaSim * Jean Krivine, Université Paris-Diderot, CNRS * * Creation: 22/07/2016 * Last modification: Time-stamp: <Jul 25 2016>* * * * * Copyright 2016 Institut National de Recherche en Informatique et * en Automatique.

In term/ directory stands all definitions the simulator works on.
Agent
A node of a site graph
Signature
Store definitions of agents
Contact_map
(internal_states, (agent_type, agent_site) link_states
Pattern
Domain to navigate in the graph
Instantiation
What users wrote when writing its rules
Alg_expr
Smart constructor
Alg_expr_extra
Primitives for handling rule rates when detecting symmetries
Affine_combinations
Raw_mixture
Patterns_extra
Primitives
Compiled kappa model unit
Model
Compiled representation of a full Kappa model
Kappa_printer
Printers (user readable) of Kappa compiled units

In grammar/ are the parser and the compilers
Configuration
Ast
Kappa AST just after parsing
LKappa
Intermediate representation of model on wich sanity has been checked
Snip
Kappa pattern compiler
Eval
Main compilation functions

The module to store and manipulate the state of the simulation are in siteGraph/
Edges
Concrete graph implementation
Navigation
Pathes to explore a mixture
Replay
Utilities to make mixtures from traces

The simulation engine is in simulation/ The core of the interpreter
Expr_interpreter
Algebraic expression computation
Rule_interpreter
State_interpreter
Event loop module
and some storage
Counter
Simulation progress keeper
Data
Must have length >= 1 (at least T or E)
Trace
Trace of simulation

The machinary to cook stories from an execution trace is in cflow/
Compression_main
Main entry to the story machinery
Utilities
High-level elementary primitives to generate stories
Priority
parameters to tune which event is discarded next

The code specific to the command line backend is in main/. It consists in file handler and renderers
Outputs
Deal with simulation output
Kappa_files
Utilities on files

Some APIs for KaSa can be found in KaSa_rep/export/
Export_to_KaDE
* export.mli * openkappa * Jérôme Feret, projet Abstraction/Antique, INRIA Paris-Rocquencourt * * Creation: Aug 23 2016 * Last modification: Time-stamp: <Aug 07 2017> * * * * Copyright 2010,2011 Institut National de Recherche en Informatique et * en Automatique.
Export_to_KaSa
* export.mli * openkappa * Jérôme Feret, projet Abstraction/Antique, INRIA Paris-Rocquencourt * * Creation: June 30 2016 * Last modification: Time-stamp: <Aug 17 2017> * * * * Copyright 2010,2011 Institut National de Recherche en Informatique et * en Automatique.
Export_to_KaSim
* export.mli * openkappa * Jérôme Feret, projet Abstraction/Antique, INRIA Paris-Rocquencourt * * Creation: June 30 2016 * Last modification: Time-stamp: <Nov 21 2016> * * * * Copyright 2010,2011 Institut National de Recherche en Informatique et * en Automatique.

Some data_structures used in KaSa. This library that proposes different implementations for arrays can be found in KaSa_rep/data_structures/
Int_storage
* int_storage.mli * * Creation: <2016-03-14 feret> * Last modification: Time-stamp: <Nov 23 2016> * * openkappa * Jérôme Feret, projet Abstraction, INRIA Paris-Rocquencourt * * * This library provides primitives to deal with storage functions * * Copyright 2010,2011,2012,2013,2014,2015 Institut National * de Recherche en Informatique et en Automatique.
The library to deal with multi-valued decision diagrams is in KaSa_rep/data_structures/mvbdu/
Mvbdu_wrapper
* mvbdu_wrapper.mli * openkappa * Jérôme Feret, projet Abstraction, INRIA Paris-Rocquencourt * * Creation: 08/03/2010 * Last modification: Time-stamp: <Jul 11 2017> * * * This library provides test benchmarks for the library of sets of finite maps from integers to integers * * Copyright 2010 Institut National de Recherche en Informatique et * en Automatique.

The code of the static analyser is in KaSa_rep/reachability_analysis/
Analyzer
Analyzer entry point
Analyzer_headers
type declarations and values shared among the abstract domains
Composite_domain
composite abstract domain (no longer with communications which have been internalized)
Communication
Analyzer_domain_sig
signature of abstract domains (with explicit communication)
Product
Functor to combine several abstract domains (with explicit communiaction among them)
Usual_domains
Several abstract domains are available:
Rules_domain
This domain tracks which rules can be applied, and warns other domains at the first application of a rule
Agents_domain
Abstract domain that abstracts away the interface of agents, and see each rule as a multiset-rewriting reaction over typed agents
Views_domain
Abstract domain to over-approximate the set of reachable views
Parallel_bonds
Abstract domain to over-approximate the set of reachable views
Site_across_bonds_domain
Abstract domain to over-approximate the set of reachable views

Primivites to deal with symmetries in rules and species
LKappa_group_action
* LKappa_group_action.ml * openkappa * Jérôme Feret & Ly Kim Quyen, projet Antique, INRIA Paris-Rocquencourt * * Creation: 2016, the 5th of December * Last modification: Time-stamp: <Jun 12 2017> * * Abstract domain to record relations between pair of sites in connected agents.
Pattern_group_action
* pattern_group_action.ml * openkappa * Jérôme Feret & Ly Kim Quyen, projet Antique, INRIA Paris-Rocquencourt * * Creation: 2016, the 5th of December * Last modification: Time-stamp: <May 13 2017> * * Abstract domain to record relations between pair of sites in connected agents.
Symmetries_sig
Abstract domain to record relations between pair of sites in connected agents.
Symmetries
* symmetries.ml * openkappa * Jérôme Feret & Ly Kim Quyen, projet Antique, INRIA Paris-Rocquencourt * * Creation: 2016, the 5th of December * Last modification: Time-stamp: <Jul 18 2017> * * Abstract domain to record relations between pair of sites in connected agents.