The two main concepts in SolidOpt are transformations and code models (notations). There are two flavors of transformations - ones that turn the code model into another (multimodel transformations) and ones that make the code model better from certain perspective (optimizations). This howto shows how one can implement a brand new transformation and add it in SolidOpt.
The integrity of the transformations in the framework is ensured by the generic interface ITransform. It has to generic arguments, which denote the source representation and the target representation.
There are a few "helper" interfaces, which implement it and provide a handy way of adding extra semantics to the transformations. IOptimize is a very straight-forward example. It implements ITransform and defines that the source and the target representations are the same. If you need to implement a custom optimization method within SolidOpt you will just need to implement IOptimize. A good example is SolidOpt's NopRemove Optmization.
In order to plug in a code model in SolidOpt you will need to build that model from something. Often they are build by transforming an existing model into the desired one. Building a proper multimodel transformation needs implementing ITransform.
The quality assurance of the transformations is essential part of the whole process. Please see details here.