A tool set and library for developing and processing Temporal Stream Logic (TSL) specifications and Control Flow Models (CFMs) that result from TSL synthesis.
The precise usage and arguments for each tool are describe by
<toolname> --help. Note that most tools will try to read some file
from STDIN when they get no specific input.
tslcheckchecks for a set of TSL specification files, whether they are valid or not.tslsymprints the symbol table that is derived from a TSL specification. The table identifies all inputs, outputs, function, and predicate symbols, as well as their derived type signatures. Therefore, the tool provides a first overview of specified modules. It is, however, also useful to identify typos in the literals used, since they are automatically introduced by their usage and, thus, do not lead to an error if spelled incorrectly.tslsizeprints the size of the specification, i.e., the number of AST nodes of the underlying TSL formula. It can be used for comparing a set of TSL benchmarks.
tslresolveresolves TSL specifications with imports into a plain TSL specifications by inlining the imported specifications.tslsplitapplies a sound specification decomposition technique to the give specification. It assumes unrealizability of the negated assumptions (such that the spec is not realizable by assumption violation). It saves the resulting specs as<filename>_x.tslin the current path wherexis the index of the respective subspecification.tsl2tlsfunder-approximates a TSL specification by a weaker LTL specification that is given in the TLSF format.tsl2tomltransforms a TSL file into TOML file of TSL formulas.
cfmcheckchecks for a set of CFM files, whether they are valid or not.cfmsymprints the symbol table of a CFM, similar totslsymprinting the symbol table for a TSL specification.cfminfoprints the number of inputs, outputs, predicates, functions, cells, and vertices of the generated CFM.cfm2codegenerates executable code from a valid CFM. To this end, a specific code target must be selected. Supported targets are:applicative: generates code for Applicative FRP librariesmonadic: generates code for Monadic FRP librariesarrow: generates code for Arrowized FRP librariesclash: generates code for the hardware description language CλaSH
tslplayallows to play against a environment strategy (system strategy) as the system (environment) interactively.tslplayshows why some options are not available to the user according to the respective specification helping to understand why some specification are unrealizable. The strategies are in the form of a CFM.tslcoregengenerate so called TSL unrealizability cores, i.e. the minimal amount of guarantees of some specification that render it unrealizable.tslminrealizablegenerate so called minimal assumption cores, i.e. the minimal amount of assumptions of some specification that render it realizable.
We recommend using the Haskell Tool Stack
for building. The tool automatically pulls the required version of the
Glasgow Haskell Compiler (GHC) and all required dependencies. Note that by
using stack, the installation does not interfere with any system
installation. After stack is installed just type
make
in the main directory to build TSL tools.
- The original paper and its extended version
- The FRP paper 'Synthesizing Functional Reactive Programs'
- A FPGA arcade game specified using TSL, syntroids
- WIP: A tool-paper describing the format and other features of
tsltools.
If you want to contribute please refer to CONTRIBUTING.