RegSy (Regular Synthesis) is a synthesis tool that can be used to build functions from specification written in WS1S (or, equivalently, specifications given by automata, thanks to the WS1S-automata connection).
./run filename input_tracks
For example, if filename is addition.mona and defines a predicate plus(x,y,z) (corresponding to the relation x + y = z), you can build a program for addition using
./run addition.mona "0 1"
“0 1” means that variables 0 and 1 (x and y) are the input tracks, and z will automatically be the output.
If you wish a program for substraction, you can type
./run addition.mona "0 2"
This way, x and z will be the input tracks, and the system will look for y such that x + y = z (y = z - x).
You can also try
./run addition.mona 2
so that z will be the input track, and once you give z, the system will return some x and y such that x + y = z
Once your function has been synthesized, you can try it on different inputs.
When you run some filename.mona on Regsy, it will automatically save the synthesized function on filename_tracks.sav; you can then run it using
./run -l addition_01.sav
Regsy also have a streaming functionality. You can use it using for instance on:
./run -k 0 not.mona 0
It will assume that the specification is k-causal (in that example, 0-causal) and then you will be able to give a file as input stream, and the program will display the output stream in return. The second 0 corresponds to the input track that you want to use.