Chisel is a slicing tool for any programming language whose semantics has previously been defined in Maude. The user is in charge of indicating the sorts for side effects and for context updates; once this information is loaded Chisel can:
- Infer the dataflow information of the instructions producing side effects.
- Perform intraprocedural slicing in a given program for a given set of variables of interest.
- Perform interprocedural slicing in a given program, which can use functions defined separately, and given set of variables of interest.
The current limitations of Chisel are:
- No pointers/arrays can be used in programs.
- No parallelism is supported.
The code of 'Chisel' is contained in a GIT repository on GitHub, whose URL is https://github.com/ariesco/chisel. To get a copy of the repository you only have to write in your Linux/MacOS console:
$ git clone https://github.com/ariesco/chisel
This will create a chisel folder containing the source code of the tool as well as several examples.
Chisel is a Full Maude tool and hence it can be loaded into any system that has Maude and Full Maude installed. Just start a Maude process and type:
$ load chisel.maude
This command will start an input/output loop where Chisel commands can be executed. The available commands in Chisel are:
-
(set side-effect sorts SORTS .), for indicating that SORTS are the side-effect sorts.
-
(set context-update rules RULES .), for indicating that RULES are the context-update rules.
-
(dataflow inferences SORT .), for showing the dataflow inferred for the given SORT for programs.
-
(slice PROGRAM wrt VARS .), for (intra)slicing the program PROGRAM given the slicing variables VARS.
-
(islice SORT with defs DEFS wrt VARS .), for interprocedural slicing of the given top sort SORT, with a set of function definitions DEFS and a set of slicing variables VARS.