Chisel is a Maude tool for slicing programs whose semantics has been previously specified in Maude.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
README.md
aux-modules.maude
chisel.maude
ctxt-upd-by-exec.maude
db-handling.maude
graph.maude
put-together
slicing.prj
slicing_process.maude
syntheses.maude

README.md

Chisel: A Maude slicer parameterized by the semantics

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.

Getting the tool

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.

Using the tool

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.