sig
  module type Substituable =
    sig
      type variable
      type term
      type substituable
      val substitute :
        Substitution.Substituable.substituable ->
        var:Substitution.Substituable.variable ->
        by:Substitution.Substituable.term ->
        Substitution.Substituable.substituable
    end
end