____ _ __ _ / ___|(_)/ _| | | __ _ _ __ __ _ \___ \| | |_ _____| | / _` | '_ \ / _` | ___) | | _|_____| |__| (_| | | | | (_| | |____/|_|_| |_____\__,_|_| |_|\__, | |___/
Sif is a DSML for the rapid prototyping of Design Patterns using a requirements oriented modelling language based on the GRL.
Sif is primarily a declarative EDSL implemented in the dependently typed language Idris. Users are free to use the EDSL and Idris tooling to construct pattern prototypes. Sif itself leverages Idris’s environment for variable handling.
A simple DSL is also provided that allows for pattern prototypes to be described in isolation away from Idris so they can be checked using the model checker. This DSL has a very limited concept of an environment.
Sif is also packaged with a frontend that allows modellers to design their own pattern prelude and replace the default library with their own. The Sif frontend is a modal interface to a pattern library that allows for:
- Viewing pattern prototypes.
- Converting pattern prototypes to various output formats.
- Pattern prototype evaluation.
- Syntax checking of externally defined prototypes.