Module type Sig.Transformation

Type of abitrary program transformation on top of an abstract domain. They typically override S's apply function

They can also change the type of relations used (for instance, to simplify the type of expressions by removing some operators)

Note that this type implies the transformation doesn't know the type of S.State.t. It is opaque, meaning it:

type relation_in
type relation_out
val id : string

Command line identifier

val doc : string

Command line documentation

module Domain (S : Classical_Domain with type relation = relation_out) : Classical_Domain with module State = S.State and module StateSet = S.StateSet and type relation = relation_in

The actual transformation functor